package l1j.server.server.clientpackets;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.TimeZone;













import l1j.opqlo.Place;
import l1j.opqlo.NewSystem.play18La;
import l1j.opqlo.NewSystem.刮刮樂;
import l1j.opqlo.NewSystem.各項記錄輸出;
import l1j.opqlo.NewSystem.NpcAction.ItemFusion;
import l1j.opqlo.NewSystem.Play18La.Play18La;
import l1j.opqlo.NewSystem.城堡技能.相關列表;
import l1j.opqlo.NewSystem.寄賣系統.AutoShopTable;
import l1j.opqlo.Server.L1World.L1World;
import l1j.opqlo.Server.L1World.WorldClan;
import l1j.opqlo.Timer.Controler.Server.ServerWarExecutor;
import l1j.opqlo.移民.DatabaseFactoryServer;
import l1j.opqlo.移民.checkTable;
import l1j.server.Config;
import l1j.server.DatabaseFactory;
import l1j.server.echo.ClientThread;
import l1j.server.server.GetNowTime;
import l1j.server.server.datatables.CastleTable;
import l1j.server.server.datatables.CharacterTable;
import l1j.server.server.datatables.DoorSpawnTable;
import l1j.server.server.datatables.ExpTable;
import l1j.server.server.datatables.HouseTable;
import l1j.server.server.datatables.ItemTable;
import l1j.server.server.datatables.NpcActionTable;
import l1j.server.server.datatables.NpcTable;
import l1j.server.server.datatables.PetTable;
import l1j.server.server.datatables.PolyTable;
import l1j.server.server.datatables.SkillsTable;
import l1j.server.server.datatables.TownTable;
import l1j.server.server.datatables.UBTable;
import l1j.server.server.datatables.lock.AccountReading;
import l1j.server.server.datatables.lock.CharSkillReading;
import l1j.server.server.datatables.lock.GameConfigReading;
import l1j.server.server.datatables.lock.HellTimeReading;
import l1j.server.server.model.L1CastleLocation;
import l1j.server.server.model.L1Character;
import l1j.server.server.model.L1Clan;
import l1j.server.server.model.L1DollList;
import l1j.server.server.model.L1HauntedHouse;
import l1j.server.server.model.L1HouseLocation;
import l1j.server.server.model.L1Location;
import l1j.server.server.model.L1Object;
import l1j.server.server.model.L1PcInventory;
import l1j.server.server.model.L1PetMatch;
import l1j.server.server.model.L1PolyMorph;
import l1j.server.server.model.L1Quest;
import l1j.server.server.model.L1Teleport;
import l1j.server.server.model.L1TownLocation;
import l1j.server.server.model.L1UltimateBattle;
import l1j.server.server.model.Instance.L1DoorInstance;
import l1j.server.server.model.Instance.L1HousekeeperInstance;
import l1j.server.server.model.Instance.L1ItemInstance;
import l1j.server.server.model.Instance.L1MerchantInstance;
import l1j.server.server.model.Instance.L1NpcInstance;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.model.Instance.L1PetInstance;
import l1j.server.server.model.Instance.L1SummonInstance;
import l1j.server.server.model.item.L1ItemId;
import l1j.server.server.model.npc.L1NpcHtml;
import l1j.server.server.model.npc.action.L1NpcAction;
import l1j.server.server.model.skill.L1BuffUtil;
import l1j.server.server.model.skill.L1SkillId;
import l1j.server.server.model.skill.L1SkillUse;
import l1j.server.server.serverpackets.S_ApplyAuction;
import l1j.server.server.serverpackets.S_AuctionBoardRead;
import l1j.server.server.serverpackets.S_AutoShopSellList;
import l1j.server.server.serverpackets.S_CharReset;
import l1j.server.server.serverpackets.S_CloseList;
import l1j.server.server.serverpackets.S_DelSkill;
import l1j.server.server.serverpackets.S_Deposit;
import l1j.server.server.serverpackets.S_Drawal;
import l1j.server.server.serverpackets.S_EffectLocation;
import l1j.server.server.serverpackets.S_HouseMap;
import l1j.server.server.serverpackets.S_HPUpdate;
import l1j.server.server.serverpackets.S_HowManyMake;
import l1j.server.server.serverpackets.S_ItemName;
import l1j.server.server.serverpackets.S_Lawful;//TODO 贖罪的聖書
import l1j.server.server.serverpackets.S_MPUpdate;
import l1j.server.server.serverpackets.S_Message_YN;
import l1j.server.server.serverpackets.S_NPCTalkReturn;
import l1j.server.server.serverpackets.S_PetCtrlMenu;
import l1j.server.server.serverpackets.S_PetList;
import l1j.server.server.serverpackets.S_RetrieveList;
import l1j.server.server.serverpackets.S_RetrieveElfList;
import l1j.server.server.serverpackets.S_RetrievePledgeList;
import l1j.server.server.serverpackets.S_SelectTarget;
import l1j.server.server.serverpackets.S_SellHouse;
import l1j.server.server.serverpackets.S_ServerMessage;
import l1j.server.server.serverpackets.S_ShopBuyList;
import l1j.server.server.serverpackets.S_ShopSellList;
import l1j.server.server.serverpackets.S_SkillIconGFX;
import l1j.server.server.serverpackets.S_SkillIconBlessOfEva;
import l1j.server.server.serverpackets.S_SkillSound;
import l1j.server.server.serverpackets.S_Sound;
import l1j.server.server.serverpackets.S_SystemMessage;
import l1j.server.server.serverpackets.S_TaxRate;
import l1j.server.server.serverpackets.S_UpdateItemList_Bless;
import l1j.server.server.serverpackets.S_UpdateItemList_Cover;
import l1j.server.server.serverpackets.S_UpdateItemList_Level;
import l1j.server.server.templates.L1Castle;
import l1j.server.server.templates.L1HellTime;
import l1j.server.server.templates.L1House;
import l1j.server.server.templates.L1Item;
import l1j.server.server.templates.L1Npc;
import l1j.server.server.templates.L1Skills;
import l1j.server.server.templates.L1Town;
import l1j.server.server.utils.Random;
import l1j.server.server.utils.SQLUtil;
import static l1j.server.server.model.skill.L1SkillId.*;
/**
 * TODO: 翻譯，好多 處理收到由客戶端傳來NPC動作的封包
 */
public class C_NPCAction extends ClientBasePacket {

	private static final String	C_NPC_ACTION = "[C] C_NPCAction";
	private static Logger _log = Logger.getLogger(C_NPCAction.class.getName());
	private static final int[]新手每日補助 = {800000,800029,800030,800031,800032,641,642,643,644,645,646,647,648};
	private static 	final int[] 馬祖祝福 = {
		117,//衝擊士氣
		114,//激勵士氣
		42,//體魄強健術
		26,//通暢氣脈術
		14,//負重強化
		57,//全部治癒術
		168//鋼鐵防護
	};
	private String enterHauntedHouse(L1PcInstance pc) {
		if (L1HauntedHouse.getInstance().getHauntedHouseStatus() == L1HauntedHouse.STATUS_PLAYING) { // 競技中
			pc.sendPackets(new S_ServerMessage(1182)); // もうゲームは始まってるよ。
			return "";
		}
		if (L1HauntedHouse.getInstance().getMembersCount() >= 10) { // 定員オーバー
			pc.sendPackets(new S_ServerMessage(1184)); // お化け屋敷は人でいっぱいだよ。
			return "";
		}

		L1HauntedHouse.getInstance().addMember(pc); // メンバーに追加
		L1Teleport.teleport(pc, 32722, 32830, (short) 5140, 2, true);
		return "";
	}

	private String enterPetMatch(L1PcInstance pc, int objid2) {
		//		Object[] petlist = pc.getPetList().values().toArray();
		final int petlist = pc.getPetList().size();
		//		if (petlist.length > 0) {
		if(petlist >0){
			pc.sendPackets(new S_ServerMessage(1187)); // ペットのアミュレットが使用中です。
			return "";
		}
		if (!L1PetMatch.getInstance().enterPetMatch(pc, objid2)) {
			pc.sendPackets(new S_ServerMessage(1182)); // もうゲームは始まってるよ。
		}
		return "";
	}

	private String enterUb(L1PcInstance pc, int npcId) {
		final L1UltimateBattle ub = UBTable.getInstance().getUbForNpcId(npcId);
		if (!ub.isActive() || !ub.canPcEnter(pc)) { // 時間外
			return "colos2";
		}
		if (ub.isNowUb()) { // 競技中
			return "colos1";
		}
		if (ub.getMembersCount() >= ub.getMaxPlayer()) { // 定員オーバー
			return "colos4";
		}

		ub.addMember(pc); // メンバーに追加
		final L1Location loc = ub.getLocation().randomLocation(10, false);
		L1Teleport.teleport(pc, loc.getX(), loc.getY(), ub.getMapId(), 5, true);
		return "";
	}

	private void expelOtherClan(L1PcInstance clanPc, int keeperId) {
		int houseId = 0;
		for (final L1House house : HouseTable.getInstance().getHouseTableList()) {
			if (house.getKeeperId() == keeperId) {
				houseId = house.getHouseId();
			}
		}
		if (houseId == 0) {
			return;
		}

		int[] loc = new int[3];
		for (final L1Object object : L1World.getInstance().getObject()) {
			if (object instanceof L1PcInstance) {
				final L1PcInstance pc = (L1PcInstance) object;
				if (L1HouseLocation.isInHouseLoc(houseId, pc.getX(), pc.getY(),
						pc.getMapId())
						&& clanPc.getClanid() != pc.getClanid()) {
					loc = L1HouseLocation.getHouseTeleportLoc(houseId, 0);
					if (pc != null) {
						L1Teleport.teleport(pc, loc[0], loc[1], (short) loc[2],5, true);
					}
				}
			}
		}
	}

	private String getBarlogEarring(L1PcInstance pc, L1NpcInstance npc, String s) {
		final int[] earringIdList = { 21020, 21021, 21022, 21023, 21024, 21025,
				21026, 21027 };
		int earringId = 0;
		L1ItemInstance item = null;
		String htmlid = null;
		if (s.equalsIgnoreCase("1")) {
			earringId = earringIdList[0];
		} else if (s.equalsIgnoreCase("2")) {
			earringId = earringIdList[1];
		} else if (s.equalsIgnoreCase("3")) {
			earringId = earringIdList[2];
		} else if (s.equalsIgnoreCase("4")) {
			earringId = earringIdList[3];
		} else if (s.equalsIgnoreCase("5")) {
			earringId = earringIdList[4];
		} else if (s.equalsIgnoreCase("6")) {
			earringId = earringIdList[5];
		} else if (s.equalsIgnoreCase("7")) {
			earringId = earringIdList[6];
		} else if (s.equalsIgnoreCase("8")) {
			earringId = earringIdList[7];
		}
		if (earringId != 0) {
			item = pc.getInventory().storeItem(earringId, 1);
			if (item != null) {
				pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate()
						.get_name(), item.getLogName())); // \f1%0が%1をくれました。
			}
			for (final int id : earringIdList) {
				if (id == earringId) {
					break;
				}
				if (pc.getInventory().checkItem(id)) {
					pc.getInventory().consumeItem(id, 1);
				}
			}
			htmlid = "";
		}
		return htmlid;
	}

	private void getBloodCrystalByKarma(L1PcInstance pc, L1NpcInstance npc,String s) {
		L1ItemInstance item = null;

		// 「ブラッドクリスタルの欠片を1個ください」
		if (s.equalsIgnoreCase("1")) {
			pc.addKarma((int) (500 * Config.RATE_KARMA));
			item = pc.getInventory().storeItem(40718, 1);
			if (item != null) {
				pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate().get_name(), item.getLogName())); // \f1%0が%1をくれました。
			}
			// ヤヒの姿を記憶するのが難しくなります。
			pc.sendPackets(new S_ServerMessage(1081));
		}
		// 「ブラッドクリスタルの欠片を10個ください」
		else if (s.equalsIgnoreCase("2")) {
			pc.addKarma((int) (5000 * Config.RATE_KARMA));
			item = pc.getInventory().storeItem(40718, 10);
			if (item != null) {
				pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate()
						.get_name(), item.getLogName())); // \f1%0が%1をくれました。
			}
			// ヤヒの姿を記憶するのが難しくなります。
			pc.sendPackets(new S_ServerMessage(1081));
		}
		// 「ブラッドクリスタルの欠片を100個ください」
		else if (s.equalsIgnoreCase("3")) {
			pc.addKarma((int) (50000 * Config.RATE_KARMA));
			item = pc.getInventory().storeItem(40718, 100);
			if (item != null) {
				pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate()
						.get_name(), item.getLogName())); // \f1%0が%1をくれました。
			}
			// ヤヒの姿を記憶するのが難しくなります。
			pc.sendPackets(new S_ServerMessage(1081));
		}
	}

	private void getSoulCrystalByKarma(L1PcInstance pc, L1NpcInstance npc,
			String s) {
		L1ItemInstance item = null;

		// 「ソウルクリスタルの欠片を1個ください」
		if (s.equalsIgnoreCase("1")) {
			pc.addKarma((int) (-500 * Config.RATE_KARMA));
			item = pc.getInventory().storeItem(40678, 1);
			if (item != null) {
				pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate()
						.get_name(), item.getLogName())); // \f1%0が%1をくれました。
			}
			// バルログの冷笑を感じ悪寒が走ります。
			pc.sendPackets(new S_ServerMessage(1080));
		}
		// 「ソウルクリスタルの欠片を10個ください」
		else if (s.equalsIgnoreCase("2")) {
			pc.addKarma((int) (-5000 * Config.RATE_KARMA));
			item = pc.getInventory().storeItem(40678, 10);
			if (item != null) {
				pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate()
						.get_name(), item.getLogName())); // \f1%0が%1をくれました。
			}
			// バルログの冷笑を感じ悪寒が走ります。
			pc.sendPackets(new S_ServerMessage(1080));
		}
		// 「ソウルクリスタルの欠片を100個ください」
		else if (s.equalsIgnoreCase("3")) {
			pc.addKarma((int) (-50000 * Config.RATE_KARMA));
			item = pc.getInventory().storeItem(40678, 100);
			if (item != null) {
				pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate()
						.get_name(), item.getLogName())); // \f1%0が%1をくれました。
			}
			// バルログの冷笑を感じ悪寒が走ります。
			pc.sendPackets(new S_ServerMessage(1080));
		}
	}

	@Override
	public String getType() {
		return C_NPC_ACTION;
	}

	private String getYaheeAmulet(L1PcInstance pc, L1NpcInstance npc, String s) {
		final int[] amuletIdList = { 20358, 20359, 20360, 20361, 20362, 20363, 20364,20365 };
		int amuletId = 0;
		L1ItemInstance item = null;
		String htmlid = null;
		if (s.equalsIgnoreCase("1")) {
			amuletId = amuletIdList[0];
		} else if (s.equalsIgnoreCase("2")) {
			amuletId = amuletIdList[1];
		} else if (s.equalsIgnoreCase("3")) {
			amuletId = amuletIdList[2];
		} else if (s.equalsIgnoreCase("4")) {
			amuletId = amuletIdList[3];
		} else if (s.equalsIgnoreCase("5")) {
			amuletId = amuletIdList[4];
		} else if (s.equalsIgnoreCase("6")) {
			amuletId = amuletIdList[5];
		} else if (s.equalsIgnoreCase("7")) {
			amuletId = amuletIdList[6];
		} else if (s.equalsIgnoreCase("8")) {
			amuletId = amuletIdList[7];
		}
		if (amuletId != 0) {
			item = pc.getInventory().storeItem(amuletId, 1);
			if (item != null) {
				pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate()
						.get_name(), item.getLogName())); // \f1%0が%1をくれました。
			}
			for (final int id : amuletIdList) {
				if (id == amuletId) {
					break;
				}
				if (pc.getInventory().checkItem(id)) {
					pc.getInventory().consumeItem(id, 1);
				}
			}
			htmlid = "";
		}
		return htmlid;
	}

	private boolean isExistDefenseClan(int castleId) {
		boolean isExistDefenseClan = false;
		for (final L1Clan clan : WorldClan.get().getAllClans()) {
			if (castleId == clan.getCastleId()) {
				isExistDefenseClan = true;
				break;
			}
		}
		return isExistDefenseClan;
	}

	private boolean isNpcSellOnly(L1NpcInstance npc) {
		final int npcId = npc.getNpcTemplate().get_npcId();
		final String npcName = npc.getNpcTemplate().get_name();
		if (npcId == 70027 // ディオ
				|| "アデン商団".equals(npcName)) {
			return true;
		}
		return false;
	}
	private String karmaLevelToHtmlId(int level) {
		if (level == 0 || level < -7 || 7 < level) {
			return "";
		}
		String htmlid = "";
		if (0 < level) {
			htmlid = "vbk" + level;
		} else if (level < 0) {
			htmlid = "vyk" + Math.abs(level);
		}
		return htmlid;
	}

	private String[] makeHouseTaxStrings(L1PcInstance pc, L1NpcInstance npc) {
		final String name = npc.getNpcTemplate().get_name();
		String[] result;
		result = new String[] { name, "2000", "1", "1", "00" };
		final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
		if (clan != null) {
			final int houseId = clan.getHouseId();
			if (houseId != 0) {
				final L1House house = HouseTable.getInstance().getHouseTable(houseId);
				final int keeperId = house.getKeeperId();
				if (npc.getNpcTemplate().get_npcId() == keeperId) {
					final Calendar cal = house.getTaxDeadline();
					final int month = cal.get(Calendar.MONTH) + 1;
					final int day = cal.get(Calendar.DATE);
					final int hour = cal.get(Calendar.HOUR_OF_DAY);
					result = new String[] { name, "2000",
							String.valueOf(month), String.valueOf(day),
							String.valueOf(hour) };
				}
			}
		}
		return result;
	}

	private String[] makeUbInfoStrings(int npcId) {
		final L1UltimateBattle ub = UBTable.getInstance().getUbForNpcId(npcId);
		return ub.makeUbInfoStrings();
	}

	private String[] makeWarTimeStrings(int castleId) {
		final L1Castle castle = CastleTable.getInstance().getCastleTable(castleId);
		if (castle == null) {
			return null;
		}
		final Calendar warTime = castle.getWarTime();
		final int year = warTime.get(Calendar.YEAR);
		final int month = warTime.get(Calendar.MONTH) + 1;
		final int day = warTime.get(Calendar.DATE);
		final int hour = warTime.get(Calendar.HOUR_OF_DAY);
		final int minute = warTime.get(Calendar.MINUTE);
		String[] result;
		if (castleId == L1CastleLocation.OT_CASTLE_ID) {
			result = new String[] { String.valueOf(year),
					String.valueOf(month), String.valueOf(day),
					String.valueOf(hour), String.valueOf(minute) };
		} else {
			result = new String[] { "", String.valueOf(year),
					String.valueOf(month), String.valueOf(day),
					String.valueOf(hour), String.valueOf(minute) };
		}
		return result;
	}

	private void openCloseDoor(L1PcInstance pc, L1NpcInstance npc, String s) {
		//	int doorId = 0;
		final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
		if (clan != null) {
			final int houseId = clan.getHouseId();
			if (houseId != 0) {
				final L1House house = HouseTable.getInstance().getHouseTable(houseId);
				final int keeperId = house.getKeeperId();
				if (npc.getNpcTemplate().get_npcId() == keeperId) {
					L1DoorInstance door1 = null;
					L1DoorInstance door2 = null;
					L1DoorInstance door3 = null;
					L1DoorInstance door4 = null;
					for (final L1DoorInstance door : DoorSpawnTable.getInstance().getDoorList()) {
						if (door.getKeeperId() == keeperId) {
							if (door1 == null) {
								door1 = door;
								continue;
							}
							if (door2 == null) {
								door2 = door;
								continue;
							}
							if (door3 == null) {
								door3 = door;
								continue;
							}
							if (door4 == null) {
								door4 = door;
								break;
							}
						}
					}
					if (door1 != null) {
						if (s.equalsIgnoreCase("open")) {
							door1.open();
						} else if (s.equalsIgnoreCase("close")) {
							door1.close();
						}
					}
					if (door2 != null) {
						if (s.equalsIgnoreCase("open")) {
							door2.open();
						} else if (s.equalsIgnoreCase("close")) {
							door2.close();
						}
					}
					if (door3 != null) {
						if (s.equalsIgnoreCase("open")) {
							door3.open();
						} else if (s.equalsIgnoreCase("close")) {
							door3.close();
						}
					}
					if (door4 != null) {
						if (s.equalsIgnoreCase("open")) {
							door4.open();
						} else if (s.equalsIgnoreCase("close")) {
							door4.close();
						}
					}
				}
			}
		}
	}

	/**開關內門控制**/
	private void openCloseGate(L1PcInstance pc, int keeperId, boolean isOpen) {
		boolean isNowWar = false;
		int pcCastleId = 0;
		L1Clan clan;
		if (pc.getClanid() != 0) {
			clan = WorldClan.get().getClan(pc.getClanname());
			if (clan != null) {
				pcCastleId = clan.getCastleId();
			}
		}
		if (keeperId == 70656 || keeperId == 70549 || keeperId == 70985) { // ケント城
			if (this.isExistDefenseClan(L1CastleLocation.KENT_CASTLE_ID)) {
				if (pcCastleId != L1CastleLocation.KENT_CASTLE_ID) {
					return;
				}
			}
			isNowWar = ServerWarExecutor.get().isNowWar(L1CastleLocation.KENT_CASTLE_ID);
		} else if (keeperId == 70600) { // OT
			if (this.isExistDefenseClan(L1CastleLocation.OT_CASTLE_ID)) {
				if (pcCastleId != L1CastleLocation.OT_CASTLE_ID) {
					return;
				}
			}
			isNowWar =ServerWarExecutor.get().isNowWar(L1CastleLocation.OT_CASTLE_ID);
		} else if (keeperId == 70778 || keeperId == 70987 || keeperId == 70687) { // WW城
			if (this.isExistDefenseClan(L1CastleLocation.WW_CASTLE_ID)) {
				if (pcCastleId != L1CastleLocation.WW_CASTLE_ID) {
					return;
				}
			}
			isNowWar = ServerWarExecutor.get().isNowWar(L1CastleLocation.WW_CASTLE_ID);
		} else if (keeperId == 70817 || keeperId == 70800 || keeperId == 70988
				|| keeperId == 70990 || keeperId == 70989 || keeperId == 70991) { // ギラン城
			if (this.isExistDefenseClan(L1CastleLocation.GIRAN_CASTLE_ID)) {
				if (pcCastleId != L1CastleLocation.GIRAN_CASTLE_ID) {
					return;
				}
			}
			isNowWar = ServerWarExecutor.get().isNowWar(L1CastleLocation.GIRAN_CASTLE_ID);

		} else if (keeperId == 70863 || keeperId == 70992 || keeperId == 70862) { // ハイネ城
			if (this.isExistDefenseClan(L1CastleLocation.HEINE_CASTLE_ID)) {
				if (pcCastleId != L1CastleLocation.HEINE_CASTLE_ID) {
					return;
				}
			}
			isNowWar = ServerWarExecutor.get().isNowWar(L1CastleLocation.HEINE_CASTLE_ID);
		} else if (keeperId == 70995 || keeperId == 70994 || keeperId == 70993) { // ドワーフ城
			if (this.isExistDefenseClan(L1CastleLocation.DOWA_CASTLE_ID)) {
				if (pcCastleId != L1CastleLocation.DOWA_CASTLE_ID) {
					return;
				}
			}
			isNowWar = ServerWarExecutor.get().isNowWar(L1CastleLocation.DOWA_CASTLE_ID);
		} else if (keeperId == 70996) { // アデン城
			if (this.isExistDefenseClan(L1CastleLocation.ADEN_CASTLE_ID)) {
				if (pcCastleId != L1CastleLocation.ADEN_CASTLE_ID) {
					return;
				}
			}
			isNowWar = ServerWarExecutor.get().isNowWar(L1CastleLocation.ADEN_CASTLE_ID);
		}

		for (final L1DoorInstance door : DoorSpawnTable.getInstance().getDoorList()) {
			if (door.getKeeperId() == keeperId) {
				if (isNowWar && door.getMaxHp() > 1) { // 戦争中は城門開閉不可
				} else {
					if (isOpen) { // 開
						door.open();
					} else { // 閉
						door.close();
					}
				}
			}
		}
	}

	private void payFee(L1PcInstance pc, L1NpcInstance npc) {
		final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
		if (clan != null) {
			final int houseId = clan.getHouseId();
			if (houseId != 0) {
				final L1House house = HouseTable.getInstance().getHouseTable(houseId);
				final int keeperId = house.getKeeperId();
				if (npc.getNpcTemplate().get_npcId() == keeperId) {
					if (pc.getInventory().checkItem(L1ItemId.ADENA, 2000)) {
						pc.getInventory().consumeItem(L1ItemId.ADENA, 2000);
						final TimeZone tz = TimeZone.getTimeZone(Config.TIME_ZONE);
						final Calendar cal = Calendar.getInstance(tz);
						cal.add(Calendar.DATE, Config.HOUSE_TAX_INTERVAL);
						cal.set(Calendar.MINUTE, 0); // 分、秒は切り捨て
						cal.set(Calendar.SECOND, 0);
						house.setTaxDeadline(cal);
						HouseTable.getInstance().updateHouse(house); // DBに書き込み
					} else {
						pc.sendPackets(new S_ServerMessage(189)); // \f1アデナが不足しています。
					}
				}
			}
		}
	}

	private void poly(ClientThread clientthread, int polyId) {
		final L1PcInstance pc = clientthread.getActiveChar();
		final int awakeSkillId = pc.getAwakeSkillId();
		if (awakeSkillId == AWAKEN_ANTHARAS
				|| awakeSkillId == AWAKEN_FAFURION
				|| awakeSkillId == AWAKEN_VALAKAS) {
			pc.sendPackets(new S_ServerMessage(1384)); // 現在の状態では変身できません。
			return;
		}
		if (pc.getInventory().checkItem(L1ItemId.ADENA, 100)) { // check
			pc.getInventory().consumeItem(L1ItemId.ADENA, 100); // del

			L1PolyMorph.doPoly(pc, polyId, 1800, L1PolyMorph.MORPH_BY_NPC);
		} else {
			pc.sendPackets(new S_ServerMessage(337, "$4")); // アデナが不足しています。
		}
	}

	private void polyByKeplisha(ClientThread clientthread, int polyId) {
		final L1PcInstance pc = clientthread.getActiveChar();
		final int awakeSkillId = pc.getAwakeSkillId();
		if (awakeSkillId == AWAKEN_ANTHARAS
				|| awakeSkillId == AWAKEN_FAFURION
				|| awakeSkillId == AWAKEN_VALAKAS) {
			pc.sendPackets(new S_ServerMessage(1384)); // 現在の状態では変身できません。
			return;
		}

		if (pc.getInventory().checkItem(L1ItemId.ADENA, 100)) { // check
			pc.getInventory().consumeItem(L1ItemId.ADENA, 100); // del

			L1PolyMorph.doPoly(pc, polyId, 1800, L1PolyMorph.MORPH_BY_KEPLISHA);
		} else {
			pc.sendPackets(new S_ServerMessage(337, "$4")); // アデナが不足しています。
		}
	}

	private void repairGate(L1PcInstance pc) {
		final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
		if (clan != null) {
			final int castleId = clan.getCastleId();
			if (castleId != 0) { // 城主クラン
				if (!ServerWarExecutor.get().isNowWar(castleId)) {
					// 城門を元に戻す
					for (final L1DoorInstance door : DoorSpawnTable.getInstance()
							.getDoorList()) {
						if (L1CastleLocation.checkInWarArea(castleId, door)) {
							door.repairGate();
						}
					}
					pc.sendPackets(new S_ServerMessage(990)); // 城門自動修理を命令しました。
				} else {
					pc.sendPackets(new S_ServerMessage(991)); // 城門自動修理命令を取り消しました。
				}
			}
		}
	}

	private String sellHouse(L1PcInstance pc, int objectId, int npcId) {
		final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
		if (clan == null) {
			return ""; // ウィンドウを消す
		}
		final int houseId = clan.getHouseId();
		if (houseId == 0) {
			return ""; // ウィンドウを消す
		}
		final L1House house = HouseTable.getInstance().getHouseTable(houseId);
		final int keeperId = house.getKeeperId();
		if (npcId != keeperId) {
			return ""; // ウィンドウを消す
		}
		if (!pc.isCrown()) {
			pc.sendPackets(new S_ServerMessage(518)); // この命令は血盟の君主のみが利用できます。
			return ""; // ウィンドウを消す
		}
		if (pc.getId() != clan.getLeaderId()) {
			pc.sendPackets(new S_ServerMessage(518)); // この命令は血盟の君主のみが利用できます。
			return ""; // ウィンドウを消す
		}
		if (house.isOnSale()) {
			return "agonsale";
		}

		pc.sendPackets(new S_SellHouse(objectId, String.valueOf(houseId)));
		return null;
	}

	@Override
	public void start(final byte[] decrypt, final ClientThread client) {
		try {
			// 資料載入
			this.read(decrypt);

			final L1PcInstance pc = client.getActiveChar();
			if (pc == null) {
				return;
			}
			final int objid = this.readD();
			final String s = this.readS();
			if(s == null){
				return;
			}

			String s2 = null;
			if (s.equalsIgnoreCase("select") // 競売掲示板のリストを選択
					|| s.equalsIgnoreCase("map") // アジトの位置を確かめる
					|| s.equalsIgnoreCase("apply")) { // 競売に参加する
				s2 = this.readS();
				if(s2 == null){
					return;
				}
			} else if (s.equalsIgnoreCase("ent")) {
				final L1Object obj = L1World.getInstance().findObject(objid);
				if (obj != null && obj instanceof L1NpcInstance) {
					if (((L1NpcInstance) obj).getNpcTemplate().get_npcId() == 80088) {
						s2 = this.readS();
						if(s2 == null){
							return;
						}
					}
				}
			}
			int[] materials = null;
			int[] counts = null;
			int[] createitem = null;
			int[] createcount = null;

			String htmlid = null;
			String success_htmlid = null;
			String failure_htmlid = null;
			String[] htmldata = null;

			L1PcInstance target;
			final L1Object obj = L1World.getInstance().findObject(objid);
			if (obj != null) {
				if (obj instanceof L1NpcInstance) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					final int difflocx = Math.abs(pc.getX() - npc.getX());
					final int difflocy = Math.abs(pc.getY() - npc.getY());
					// 3マス以上離れた場合アクション無効
					if (difflocx > 3 || difflocy > 3) {
						return;
					}
					npc.onFinalAction(pc, s);
				} else if (obj instanceof L1PcInstance) {
					target = (L1PcInstance) obj;
					if (s.matches("[0-9]+")) {
						if (target.isSummonMonster()) {
							this.summonMonster(target, s);
							target.setSummonMonster(false);
						}
					}else if (s.equalsIgnoreCase("b1")) {
						int type = 0;
						if(pc.getConfig().isTVon()){
							type = 1;
						}
						pc.getConfig().setTV(type);
						GameConfigReading.get().updateB1(pc.getId(), type);
						pc.sendPackets(new S_NPCTalkReturn(pc.getId(), "newhigoBB", pc.getConfig().getValue()));
					}else if (s.equalsIgnoreCase("b2")) {
						int type = 0;
						if(pc.getConfig().isPartyIfo()){
							type = 1;
						}
						pc.getConfig().setPartyIfo(type);
						GameConfigReading.get().updateB2(pc.getId(), type);
						pc.sendPackets(new S_NPCTalkReturn(pc.getId(), "newhigoBB", pc.getConfig().getValue()));
					}else if (s.equalsIgnoreCase("b3")) {
						int type = 0;
						if(pc.getConfig().isPVPIfo()){
							type = 1;
						}
						pc.getConfig().setPVPIfo(type);
						GameConfigReading.get().updateB3(pc.getId(), type);
						pc.sendPackets(new S_NPCTalkReturn(pc.getId(), "newhigoBB", pc.getConfig().getValue()));
					}else if (s.equalsIgnoreCase("b4")) {
						int type = 0;
						if(pc.getConfig().isWeaponEffect()){
							type = 1;
						}
						pc.getConfig().setWeaponEffect(type);
						GameConfigReading.get().updateB4(pc.getId(), type);
						pc.sendPackets(new S_NPCTalkReturn(pc.getId(), "newhigoBB", pc.getConfig().getValue()));
					}else if (s.equalsIgnoreCase("b5")) {
						int type = 0;
						if(pc.getConfig().isMagicScroll()){
							type = 1;
						}
						pc.getConfig().setMagicScroll(type);
						GameConfigReading.get().updateB5(pc.getId(), type);
						pc.sendPackets(new S_NPCTalkReturn(pc.getId(), "newhigoBB", pc.getConfig().getValue()));
					}else if (s.equalsIgnoreCase("b6")) {
						int type = 0;
						if(pc.getConfig().isHpBarRateX10()){
							type = 1;
							pc.sendPackets(new S_HPUpdate((pc.getCurrentHp()/10), (pc.getMaxHp()/10)));
						}else{
							pc.sendPackets(new S_HPUpdate(pc.getCurrentHp(), pc.getMaxHp()));
						}
						pc.getConfig().setHpBarRateX10(type);
						GameConfigReading.get().updateB6(pc.getId(), type);
						pc.sendPackets(new S_NPCTalkReturn(pc.getId(), "newhigoBB", pc.getConfig().getValue()));
					}else if (s.equalsIgnoreCase("status")) {
						final L1DollList list = pc.getDollList();
						final int[] data = {pc.get_metempsychosis() , pc.getLevel(),
								pc.getCurrentHp(), pc.getMaxHp() , pc.getCurrentMp(),pc.getMaxMp(),
								pc.getStr(),pc.getDex(),pc.getInt(),
								pc.getWis(),pc.getCon(),pc.getCha(),
								pc.getExtraDmg(),pc.getExtraDef(),
								pc.getDamageReductionByArmor(),
								pc.getSp() ,
								pc.getMr(),
								pc.getMagicDmgModfier(),
								(int) ((1+pc.get金幣率()+pc._CastleDropRate)*100),
								(int) ((1+pc.getDroprate()+pc._CastleDropRate)*100),
								(int) ((pc.getExpRate+pc._CastleExpRate)*100),
								//								0,0,0,0,0,0,0,0
								list._dmg,list._dmgchance,
								list._bowdmg,list._bowdmgchance,
								list._reductionM,list._reductionchance,
								list._exp,list._expchance,
								list._eva,

						};
						pc.sendPackets(new S_NPCTalkReturn(pc.getId(), "status", pc.getName() , data));
					} else {
						final int awakeSkillId = target.getAwakeSkillId();
						if (awakeSkillId == AWAKEN_ANTHARAS
								|| awakeSkillId == AWAKEN_FAFURION
								|| awakeSkillId == AWAKEN_VALAKAS) {
							target.sendPackets(new S_ServerMessage(1384)); // 現在の状態では変身できません。
							return;
						}
						if (target.isShapeChange()) {
							L1PolyMorph.handleCommands(target, s);
							target.setShapeChange(false);
						} else {
							final L1PolyMorph poly = PolyTable.getInstance().getTemplate(s);

							if (poly != null || s.equals("none")) {
								if (target.getInventory().checkItem(40088)
										&& this.usePolyScroll(target, 40088, s)) {
								}
								if (target.getInventory().checkItem(40096)
										&& this.usePolyScroll(target, 40096, s)) {
								}
								if (target.getInventory().checkItem(140088)
										&& this.usePolyScroll(target, 140088, s)) {
								}
							}
						}
					}
					return;
				}
			}
			// XML化されたアクション
			final L1NpcAction action = NpcActionTable.getInstance().get(s, pc, obj);
			if (action != null) {
				final L1NpcHtml result = action.execute(s, pc, obj, this.readByte());
				if (result != null) {
					pc.sendPackets(new S_NPCTalkReturn(obj.getId(), result));
				}
				return;
			}

			/*
			 * アクション個別処理
			 */
			L1Npc l1npc = null;
			int npcid = 0;
			if(obj != null){
				l1npc = ((L1NpcInstance) obj).getNpcTemplate();
			}
			if(l1npc != null){
				npcid = l1npc.get_npcId();
			}
			if(s.equalsIgnoreCase("查看列表")){//opqlo 寄賣系統
				pc.ShopListVersion = AutoShopTable.getInstance().GetVersion();
				pc.sendPackets(new S_AutoShopSellList(objid));

			}else if (s.equalsIgnoreCase("buy")) {
				final L1NpcInstance npc = (L1NpcInstance) obj;
				// "sell"のみ表示されるはずのNPCをチェックする。
				if (this.isNpcSellOnly(npc)) {
					return;
				}
				// 販売リスト表示
				pc.sendPackets(new S_ShopSellList(objid));

			} else if (s.equalsIgnoreCase("sell")) {

				if (npcid == 70523 || npcid == 70805) { // ラダー or ジュリー
					htmlid = "ladar2";
				} else if (npcid == 70537 || npcid == 70807) { // ファーリン or フィン
					htmlid = "farlin2";
				} else if (npcid == 70525 || npcid == 70804) { // ライアン or ジョエル
					htmlid = "lien2";
				} else if (npcid == 50527 || npcid == 50505 || npcid == 50519
						|| npcid == 50545 || npcid == 50531 || npcid == 50529
						|| npcid == 50516 || npcid == 50538 || npcid == 50518
						|| npcid == 50509 || npcid == 50536 || npcid == 50520
						|| npcid == 50543 || npcid == 50526 || npcid == 50512
						|| npcid == 50510 || npcid == 50504 || npcid == 50525
						|| npcid == 50534 || npcid == 50540 || npcid == 50515
						|| npcid == 50513 || npcid == 50528 || npcid == 50533
						|| npcid == 50542 || npcid == 50511 || npcid == 50501
						|| npcid == 50503 || npcid == 50508 || npcid == 50514
						|| npcid == 50532 || npcid == 50544 || npcid == 50524
						|| npcid == 50535 || npcid == 50521 || npcid == 50517
						|| npcid == 50537 || npcid == 50539 || npcid == 50507
						|| npcid == 50530 || npcid == 50502 || npcid == 50506
						|| npcid == 50522 || npcid == 50541 || npcid == 50523
						|| npcid == 50620 || npcid == 50623 || npcid == 50619
						|| npcid == 50621 || npcid == 50622 || npcid == 50624
						|| npcid == 50617 || npcid == 50614 || npcid == 50618
						|| npcid == 50616 || npcid == 50615 || npcid == 50626
						|| npcid == 50627 || npcid == 50628 || npcid == 50629
						|| npcid == 50630 || npcid == 50631) { // アジトのNPC
					final String sellHouseMessage = this.sellHouse(pc, objid, npcid);
					if (sellHouseMessage != null) {
						htmlid = sellHouseMessage;
					}
				} else { // 一般商人

					// 買い取りリスト表示
					pc.sendPackets(new S_ShopBuyList(objid, pc));
				}
				//TODO アライメント回復
			} else if (s.equalsIgnoreCase("retrieve")) { // 「個人倉庫：アイテムを受け取る」
				if (pc.getLevel() >= 5) {
					if (client.getAccount().get_warehouse() > 0) {
						pc.sendPackets(new S_ServerMessage(834));
					} else {
						pc.sendPackets(new S_RetrieveList(objid, pc));
					}
				}
			} else if (s.equalsIgnoreCase("retrieve-elven")) { // 「エルフ倉庫：荷物を受け取る」
				if (pc.getLevel() >= 5 && pc.isElf()) {
					if (client.getAccount().get_warehouse() > 0) {
						pc.sendPackets(new S_ServerMessage(834));
					} else {
						pc.sendPackets(new S_RetrieveElfList(objid, pc));
					}

				}
			} else if (s.equalsIgnoreCase("retrieve-pledge")) { // 「血盟倉庫：荷物を受け取る」
				if (pc.getLevel() >= 5) {
					if (pc.getClanid() == 0) {
						// \f1血盟倉庫を使用するには血盟に加入していなくてはなりません。
						pc.sendPackets(new S_ServerMessage(208));
						return;
					}
					final int size = pc.getClan().getDwarfForClanInventory().getSize();

					if (size > 0) {
						final int rank = pc.getClanRank();
						switch (rank) {
						case L1Clan.CLAN_RANK_PUBLIC:// 2:一般 
						case L1Clan.CLAN_RANK_GUARDIAN:// 3:副君主 
							//						case L1Clan.ALLIANCE_CLAN_RANK_ATTEND:// 5:修習騎士 
						case L1Clan.ALLIANCE_CLAN_RANK_GUARDIAN:// 6:守護騎士 
						case L1Clan.NORMAL_CLAN_RANK_GENERAL:// 7:一般 
							//						case L1Clan.NORMAL_CLAN_RANK_ATTEND:// 8:修習騎士 
						case L1Clan.NORMAL_CLAN_RANK_GUARDIAN:// 9:守護騎士 
							if (pc.getTitle().equalsIgnoreCase("")) {
								// 只有收到稱謂的人才能使用血盟倉庫。
								pc.sendPackets(new S_ServerMessage(728));
								return;
							}
							break;


						case L1Clan.CLAN_RANK_PRINCE:// 4:聯盟君主 
						case L1Clan.NORMAL_CLAN_RANK_PRINCE:// 10:聯盟君主
							break;
						default:
							// 只有收到稱謂的人才能使用血盟倉庫。
							//							pc.sendPackets(new S_ServerMessage(728));
							pc.sendPackets(new S_SystemMessage("你的階級無法使用血盟倉庫。"));
							return;
						}
						// 834：倉庫密碼。 
						//						int srcpwd = client.getAccount().get_warehouse();
						//						if (srcpwd != -256) {
						//							pc.sendPackets(new S_ServerMessage(834));
						//							return;
						//						}
						pc.sendPackets(new S_RetrievePledgeList(objid, pc));

					} else {
						// noitemret
						pc.sendPackets(new S_NPCTalkReturn(objid, "noitemret"));
					}

					//					final int rank = pc.getClanRank();
					//					if (rank != L1Clan.CLAN_RANK_PUBLIC
					//							&& rank != L1Clan.CLAN_RANK_GUARDIAN
					//							&& rank != L1Clan.CLAN_RANK_PRINCE) {
					//						// タイトルのない血盟員もしくは、見習い血盟員の場合は、血盟倉庫を利用することはできません。
					//						pc.sendPackets(new S_ServerMessage(728));
					//						return;
					//					}
					//					if (rank != L1Clan.CLAN_RANK_PRINCE
					//							&& pc.getTitle().equalsIgnoreCase("")) {
					//						// タイトルのない血盟員もしくは、見習い血盟員の場合は、血盟倉庫を利用することはできません。
					//						pc.sendPackets(new S_ServerMessage(728));
					//						return;
					//					}
					//					pc.sendPackets(new S_RetrievePledgeList(objid, pc));
				}
			} else if (s.equalsIgnoreCase("get")) {
				final L1NpcInstance npc = (L1NpcInstance) obj;
				final int npcId = npc.getNpcTemplate().get_npcId();
				// クーパー or ダンハム
				if (npcId == 70099 || npcId == 70796) {
					final L1ItemInstance item = pc.getInventory().storeItem(20081, 1); // オイルスキンマント
					final String npcName = npc.getNpcTemplate().get_name();
					final String itemName = item.getItem().getName();
					pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
					pc.getQuest().set_end(L1Quest.QUEST_OILSKINMANT);
					htmlid = ""; // ウィンドウを消す
				}
				// タウンマスター：報酬をもらう
				else if (npcId == 70528 || npcId == 70546 || npcId == 70567
						|| npcId == 70594 || npcId == 70654 || npcId == 70748
						|| npcId == 70774 || npcId == 70799 || npcId == 70815
						|| npcId == 70860) {

					if (pc.getHomeTownId() > 0) {

					} else {

					}
				}
			} else if (s.equalsIgnoreCase("fix")) { // 武器を修理する

			} else if (s.equalsIgnoreCase("room")) { // 部屋を借りる

			} else if (s.equalsIgnoreCase("hall")
					&& obj instanceof L1MerchantInstance) { // ホールを借りる

			} else if (s.equalsIgnoreCase("return")) { // 部屋・ホールを返す

			} else if (s.equalsIgnoreCase("enter")) { // 部屋・ホールに入る

			} else if (s.equalsIgnoreCase("openigate")) { // 內城門 (打開)
				final L1NpcInstance npc = (L1NpcInstance) obj;
				this.openCloseGate(pc, npc.getNpcTemplate().get_npcId(), true);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("closeigate")) { // 內城門 (關閉)
				final L1NpcInstance npc = (L1NpcInstance) obj;
				this.openCloseGate(pc, npc.getNpcTemplate().get_npcId(), false);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("askwartime")) { // 近衛兵 / 次の攻城戦いの時間をたずねる
				final L1NpcInstance npc = (L1NpcInstance) obj;
				if (npc.getNpcTemplate().get_npcId() == 60514) { // ケント城近衛兵
					htmldata = this.makeWarTimeStrings(L1CastleLocation.KENT_CASTLE_ID);
					htmlid = "ktguard7";
				} else if (npc.getNpcTemplate().get_npcId() == 60560) { // オーク近衛兵
					htmldata = this.makeWarTimeStrings(L1CastleLocation.OT_CASTLE_ID);
					htmlid = "orcguard7";
				} else if (npc.getNpcTemplate().get_npcId() == 60552) { // ウィンダウッド城近衛兵
					htmldata = this.makeWarTimeStrings(L1CastleLocation.WW_CASTLE_ID);
					htmlid = "wdguard7";
				} else if (npc.getNpcTemplate().get_npcId() == 60524 || // ギラン街入り口近衛兵(弓)
						npc.getNpcTemplate().get_npcId() == 60525 || // ギラン街入り口近衛兵
						npc.getNpcTemplate().get_npcId() == 60529) { // ギラン城近衛兵
					htmldata = this.makeWarTimeStrings(L1CastleLocation.GIRAN_CASTLE_ID);
					htmlid = "grguard7";
				} else if (npc.getNpcTemplate().get_npcId() == 70857) { // ハイネ城ハイネガード
					htmldata = this.makeWarTimeStrings(L1CastleLocation.HEINE_CASTLE_ID);
					htmlid = "heguard7";
				} else if (npc.getNpcTemplate().get_npcId() == 60530 || // ドワーフ城ドワーフガード
						npc.getNpcTemplate().get_npcId() == 60531) {
					htmldata = this.makeWarTimeStrings(L1CastleLocation.DOWA_CASTLE_ID);
					htmlid = "dcguard7";
				} else if (npc.getNpcTemplate().get_npcId() == 60533 || // アデン城 ガード
						npc.getNpcTemplate().get_npcId() == 60534) {
					htmldata = this.makeWarTimeStrings(L1CastleLocation.ADEN_CASTLE_ID);
					htmlid = "adguard7";
				} else if (npc.getNpcTemplate().get_npcId() == 81156) { // アデン偵察兵（ディアド要塞）
					htmldata = this.makeWarTimeStrings(L1CastleLocation.DIAD_CASTLE_ID);
					htmlid = "dfguard3";
				}
			} else if (s.equalsIgnoreCase("inex")) { // 収入/支出の報告を受ける
				// 暫定的に公金をチャットウィンドウに表示させる。
				// メッセージは適当。
				final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
				if (clan != null) {
					final int castle_id = clan.getCastleId();
					if (castle_id != 0) { // 城主クラン
						final L1Castle l1castle = CastleTable.getInstance()
								.getCastleTable(castle_id);
						pc.sendPackets(new S_ServerMessage(309, // %0の精算総額は%1アデナです。
								l1castle.getName(), String.valueOf(l1castle
										.getPublicMoney())));
						htmlid = ""; // ウィンドウを消す
					}
				}
			} else if (s.equalsIgnoreCase("tax")) { // 税率を調節する
				pc.sendPackets(new S_TaxRate(pc.getId()));
			} else if (s.equalsIgnoreCase("withdrawal")) { // 資金を引き出す
				final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
				if (clan != null) {
					final int castle_id = clan.getCastleId();
					if (castle_id != 0) { // 城主クラン
						final L1Castle l1castle = CastleTable.getInstance()
								.getCastleTable(castle_id);
						pc.sendPackets(new S_Drawal(pc.getId(), l1castle
								.getPublicMoney()));
					}
				}
			} else if (s.equalsIgnoreCase("cdeposit")) { // 資金を入金する
				pc.sendPackets(new S_Deposit(pc.getId()));
			} else if (s.equalsIgnoreCase("employ")) { // 傭兵の雇用

			} else if (s.equalsIgnoreCase("arrange")) { // 雇用した傭兵の配置

			} else if (s.equalsIgnoreCase("castlegate")) { // 城門を管理する
				this.repairGate(pc);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("encw")) { // 武器専門家 / 武器の強化魔法を受ける
				if (pc.getWeapon() == null) {
					pc.sendPackets(new S_ServerMessage(79));
				} else {
					for (final L1ItemInstance item : pc.getInventory().getItems()) {
						if (pc.getWeapon().equals(item)) {
							final L1SkillUse l1skilluse = new L1SkillUse();
							l1skilluse.handleCommands(pc, ENCHANT_WEAPON,
									item.getId(), 0, 0, null, 0,
									L1SkillUse.TYPE_SPELLSC);
							break;
						}
					}
				}
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("enca")) { // 防具専門家 / 防具の強化魔法を受ける
				final L1ItemInstance item = pc.getInventory().getItemEquipped(2, 2);
				if (item != null) {
					final L1SkillUse l1skilluse = new L1SkillUse();
					l1skilluse.handleCommands(pc, BLESSED_ARMOR, item
							.getId(), 0, 0, null, 0, L1SkillUse.TYPE_SPELLSC);
				} else {
					pc.sendPackets(new S_ServerMessage(79));
				}
				htmlid = ""; // ウィンドウを消す
				//TODO 3.5C關閉寵物圖型介面UI變更by99團隊
			} else if (s.equalsIgnoreCase("depositnpc")) { //TODO 寄託寵物
				Collection<L1NpcInstance>_removeList = new ArrayList<L1NpcInstance>();
				_removeList.addAll(pc.getPetList().values());
				for (final L1NpcInstance petNpc : _removeList) {
					if (petNpc instanceof L1PetInstance) { // ペット
						final L1PetInstance pet = (L1PetInstance) petNpc;
						pc.sendPackets(new S_PetCtrlMenu(pc, petNpc, false));
						pc.getPetList().remove(pet.getId());
						pet.deleteMe();
						pet.setDead(true);//opqlo 修正寵物
					}
				}
				_removeList.clear();
				_removeList= null;
				//TODO 3.5C關閉寵物圖型介面UI變更by99團隊

				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("withdrawnpc")) { // 「動物を受け取る」
				pc.sendPackets(new S_PetList(objid, pc));
			} else if (s.equalsIgnoreCase("changename")) { // 「名前を決める」
				pc.setTempID(objid); // ペットのオブジェクトIDを保存しておく
				pc.sendPackets(new S_Message_YN(325, "")); // 動物の名前を決めてください：
			} else if (s.equalsIgnoreCase("attackchr")) {
				if (obj instanceof L1Character) {
					final L1Character cha = (L1Character) obj;
					pc.sendPackets(new S_SelectTarget(cha.getId()));
				}
			} else if (s.equalsIgnoreCase("select")) { // 競売掲示板のリストをクリック
				pc.sendPackets(new S_AuctionBoardRead(objid, s2));
			} else if (s.equalsIgnoreCase("map")) { // アジトの位置を確かめる
				pc.sendPackets(new S_HouseMap(objid, s2));
			} else if (s.equalsIgnoreCase("apply")) { // 競売に参加する
				final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
				if (clan != null) {
					if (pc.isCrown() && pc.getId() == clan.getLeaderId()) { // 君主、かつ、血盟主
						if (pc.getLevel() >= 15) {
							if (clan.getHouseId() == 0) {
								pc.sendPackets(new S_ApplyAuction(objid, s2));
							} else {
								pc.sendPackets(new S_ServerMessage(521)); // すでに家を所有しています。
								htmlid = ""; // ウィンドウを消す
							}
						} else {
							pc.sendPackets(new S_ServerMessage(519)); // レベル15未満の君主は競売に参加できません。
							htmlid = ""; // ウィンドウを消す
						}
					} else {
						pc.sendPackets(new S_ServerMessage(518)); // この命令は血盟の君主のみが利用できます。
						htmlid = ""; // ウィンドウを消す
					}
				} else {
					pc.sendPackets(new S_ServerMessage(518)); // この命令は血盟の君主のみが利用できます。
					htmlid = ""; // ウィンドウを消す
				}
			} else if (s.equalsIgnoreCase("open") // ドアを開ける
					|| s.equalsIgnoreCase("close")) { // ドアを閉める
				final L1NpcInstance npc = (L1NpcInstance) obj;
				this.openCloseDoor(pc, npc, s);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("expel")) { // 外部の人間を追い出す
				final L1NpcInstance npc = (L1NpcInstance) obj;
				this.expelOtherClan(pc, npc.getNpcTemplate().get_npcId());
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("pay")) { // 税金を納める
				final L1NpcInstance npc = (L1NpcInstance) obj;
				htmldata = this.makeHouseTaxStrings(pc, npc);
				htmlid = "agpay";
			} else if (s.equalsIgnoreCase("payfee")) { // 税金を納める
				final L1NpcInstance npc = (L1NpcInstance) obj;
				this.payFee(pc, npc);
				htmlid = "";
			} else if (s.equalsIgnoreCase("name")) { // 家の名前を決める
				final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
				if (clan != null) {
					final int houseId = clan.getHouseId();
					if (houseId != 0) {
						final L1House house = HouseTable.getInstance().getHouseTable(
								houseId);
						final int keeperId = house.getKeeperId();
						final L1NpcInstance npc = (L1NpcInstance) obj;
						if (npc.getNpcTemplate().get_npcId() == keeperId) {
							pc.setTempID(houseId); // アジトIDを保存しておく
							pc.sendPackets(new S_Message_YN(512, "")); // 家の名前は？
						}
					}
				}
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("rem")) { // 家の中の家具をすべて取り除く
			} else if (s.equalsIgnoreCase("tel0") // テレポートする(倉庫)
					|| s.equalsIgnoreCase("tel1") // テレポートする(ペット保管所)
					|| s.equalsIgnoreCase("tel2") // テレポートする(贖罪の使者)
					|| s.equalsIgnoreCase("tel3")) { // テレポートする(ギラン市場)
				final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
				if (clan != null) {
					final int houseId = clan.getHouseId();
					if (houseId != 0) {
						final L1House house = HouseTable.getInstance().getHouseTable(houseId);
						final int keeperId = house.getKeeperId();
						final L1NpcInstance npc = (L1NpcInstance) obj;
						if (npc.getNpcTemplate().get_npcId() == keeperId) {
							int[] loc = new int[3];
							if (s.equalsIgnoreCase("tel0")) {
								loc = L1HouseLocation.getHouseTeleportLoc(houseId,0);
							} else if (s.equalsIgnoreCase("tel1")) {
								loc = L1HouseLocation.getHouseTeleportLoc(houseId,1);
							} else if (s.equalsIgnoreCase("tel2")) {
								loc = L1HouseLocation.getHouseTeleportLoc(houseId,2);
							} else if (s.equalsIgnoreCase("tel3")) {
								loc = L1HouseLocation.getHouseTeleportLoc(houseId,3);
							}
							L1Teleport.teleport(pc, loc[0], loc[1], (short) loc[2],5, true);
						}
					}
				}
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("upgrade")) { // 地下アジトを作る
				final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
				if (clan != null) {
					final int houseId = clan.getHouseId();
					if (houseId != 0) {
						final L1House house = HouseTable.getInstance().getHouseTable(
								houseId);
						final int keeperId = house.getKeeperId();
						final L1NpcInstance npc = (L1NpcInstance) obj;
						if (npc.getNpcTemplate().get_npcId() == keeperId) {
							if (pc.isCrown() && pc.getId() == clan.getLeaderId()) { // 君主、かつ、血盟主
								if (house.isPurchaseBasement()) {
									// 既に地下アジトを所有しています。
									pc.sendPackets(new S_ServerMessage(1135));
								} else {
									if (pc.getInventory().consumeItem(L1ItemId.ADENA, 5000000)) {
										house.setPurchaseBasement(true);
										HouseTable.getInstance().updateHouse(house); // DBに書き込み
										// 地下アジトが生成されました。
										pc.sendPackets(new S_ServerMessage(1099));
									} else {
										// \f1アデナが不足しています。
										pc.sendPackets(new S_ServerMessage(189));
									}
								}
							} else {
								// この命令は血盟の君主のみが利用できます。
								pc.sendPackets(new S_ServerMessage(518));
							}
						}
					}
				}
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("hall")
					&& obj instanceof L1HousekeeperInstance) { // 地下アジトにテレポートする
				final L1Clan clan = WorldClan.get().getClan(pc.getClanname());
				if (clan != null) {
					final int houseId = clan.getHouseId();
					if (houseId != 0) {
						final L1House house = HouseTable.getInstance().getHouseTable(houseId);
						final int keeperId = house.getKeeperId();
						final L1NpcInstance npc = (L1NpcInstance) obj;
						if (npc.getNpcTemplate().get_npcId() == keeperId) {
							if (house.isPurchaseBasement()) {
								int[] loc = new int[3];
								loc = L1HouseLocation.getBasementLoc(houseId);
								L1Teleport.teleport(pc, loc[0], loc[1],(short) loc[2], 5, true);
							} else {
								// 地下アジトがないため、テレポートできません。
								pc.sendPackets(new S_ServerMessage(1098));
							}
						}
					}
				}
				htmlid = ""; // ウィンドウを消す
			}

			// ElfAttr:0.無属性,1.地属性,2.火属性,4.水属性,8.風属性
			else if (s.equalsIgnoreCase("fire")) // エルフの属性変更「火の系列を習う」
			{
				if (pc.isElf()) {
					if (pc.getElfAttr() != 0) {
						return;
					}
					pc.setElfAttr(2);
					pc.save(); // DBにキャラクター情報を書き込む
					pc.sendPackets(new S_SkillIconGFX(15, 1)); // 体の隅々に火の精霊力が染みこんできます。
					htmlid = ""; // ウィンドウを消す
				}
			} else if (s.equalsIgnoreCase("water")) { // エルフの属性変更「水の系列を習う」
				if (pc.isElf()) {
					if (pc.getElfAttr() != 0) {
						return;
					}
					pc.setElfAttr(4);
					pc.save(); // DBにキャラクター情報を書き込む
					pc.sendPackets(new S_SkillIconGFX(15, 2)); // 体の隅々に水の精霊力が染みこんできます。
					htmlid = ""; // ウィンドウを消す
				}
			} else if (s.equalsIgnoreCase("air")) { // エルフの属性変更「風の系列を習う」
				if (pc.isElf()) {
					if (pc.getElfAttr() != 0) {
						return;
					}
					pc.setElfAttr(8);
					pc.save(); // DBにキャラクター情報を書き込む
					pc.sendPackets(new S_SkillIconGFX(15, 3)); // 体の隅々に風の精霊力が染みこんできます。
					htmlid = ""; // ウィンドウを消す
				}
			} else if (s.equalsIgnoreCase("earth")) { // エルフの属性変更「地の系列を習う」
				if (pc.isElf()) {
					if (pc.getElfAttr() != 0) {
						return;
					}
					pc.setElfAttr(1);
					pc.save(); // DBにキャラクター情報を書き込む
					pc.sendPackets(new S_SkillIconGFX(15, 4)); // 体の隅々に地の精霊力が染みこんできます。
					htmlid = ""; // ウィンドウを消す
				}
			} else if (s.equalsIgnoreCase("init")) { // エルフの属性変更「精霊力を除去する」
				if (pc.isElf()) {
					if (pc.getElfAttr() == 0) {
						return;
					}
					for (int cnt = 129; cnt <= 176; cnt++) // 全エルフ魔法をチェック
					{
						final L1Skills l1skills1 = SkillsTable.getInstance().getTemplate(cnt);
						final int skill_attr = l1skills1.getAttr();
						if (skill_attr != 0) // 無属性魔法以外のエルフ魔法をDBから削除する
						{
							CharSkillReading.get().spellLost(pc.getId(), l1skills1.getSkillId());
						}
					}
					// エレメンタルプロテクションによって上昇している属性防御をリセット
					if (pc.hasSkillEffect(ELEMENTAL_PROTECTION)) {
						pc.removeSkillEffect(ELEMENTAL_PROTECTION);
					}
					pc.sendPackets(new S_DelSkill(null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 248, 252, 252, 255, 0, 0, 0, 0,0, 0)); // 無属性魔法以外のエルフ魔法を魔法ウィンドウから削除する
					pc.setElfAttr(0);
					pc.save(); // DBにキャラクター情報を書き込む
					pc.sendPackets(new S_ServerMessage(678));
					htmlid = ""; // ウィンドウを消す
				}
			} else if (s.equalsIgnoreCase("exp")) { // 「経験値を回復する」
				if (pc.getExpRes() == 1) {
					int cost = 0;
					final int level = pc.getLevel();
					final int lawful = pc.getLawful();
					if (level < 45) {
						cost = level * level * 100;
					} else {
						cost = level * level * 200;
					}
					if (lawful >= 0) {
						cost = cost / 2;
					}
					pc.sendPackets(new S_Message_YN(738, String.valueOf(cost))); // 経験値を回復するには%0のアデナが必要です。経験値を回復しますか？
				} else {
					pc.sendPackets(new S_ServerMessage(739)); // 今は経験値を回復することができません。
					htmlid = ""; // ウィンドウを消す
				}
			} else if (s.equalsIgnoreCase("pk")) { // 「贖罪する」
				//				if (pc.getLawful() < 30000) {
				//					pc.sendPackets(new S_ServerMessage(559)); // \f1まだ罪晴らしに十分な善行を行っていません。
				//				} else if (pc.get_PKcount() < 5) {
				//					pc.sendPackets(new S_ServerMessage(560)); // \f1まだ罪晴らしをする必要はありません。
				//				} else {
				//					if (pc.getInventory().consumeItem(L1ItemId.ADENA, 700000)) {
				//						pc.set_PKcount(pc.get_PKcount() - 5);
				//						pc.sendPackets(new S_ServerMessage(561, String.valueOf(pc.get_PKcount()))); // PK回数が%0になりました。
				//					} else {
				//						pc.sendPackets(new S_ServerMessage(189)); // \f1アデナが不足しています。
				//					}
				//				}
				// ウィンドウを消す
				htmlid = "";
			} else if (s.equalsIgnoreCase("ent")) {
				// 「お化け屋敷に入る」
				// 「アルティメット バトルに参加する」または
				// 「観覧モードで闘技場に入る」
				// 「ステータス再分配」
				final int npcId = ((L1NpcInstance) obj).getNpcId();
				if (npcId == 80085 || npcId == 80086 || npcId == 80087) {
					htmlid = this.enterHauntedHouse(pc);
				} else if (npcId == 80088) {
					if(s2.length()<=0){
						return;
					}
					htmlid = this.enterPetMatch(pc, Integer.valueOf(s2));
				} else if (npcId == 50038 || npcId == 50042 || npcId == 50029
						|| npcId == 50019 || npcId == 50062) { // 副管理人の場合は観戦
					htmlid = this.watchUb(pc, npcId);
				} else if (npcId == 71251) { // ロロ
					if (!pc.getInventory().checkItem(49142)) { // 希望のロウソク
						pc.sendPackets(new S_ServerMessage(1290)); // ステータス初期化に必要なアイテムがありません。
						return;
					}
					final L1SkillUse l1skilluse = new L1SkillUse();
					l1skilluse.handleCommands(pc, CANCELLATION,pc.getId(), pc.getX(), pc.getY(), null, 0,L1SkillUse.TYPE_LOGIN);
					pc.getInventory().takeoffEquip(945); // 牛のpolyIdで装備を全部外す。
					L1Teleport.teleport(pc, 32737, 32789, (short) 997, 4, false);
					final int initStatusPoint = 75 + pc.getElixirStats();
					int pcStatusPoint = pc.getBaseStr() + pc.getBaseInt()+ pc.getBaseWis() + pc.getBaseDex() + pc.getBaseCon()+ pc.getBaseCha();
					if (pc.getLevel() > 50) {
						pcStatusPoint += pc.getLevel() - 50 - pc.getBonusStats();
					}
					final int diff = pcStatusPoint - initStatusPoint;
					/**
					 * [50級以上]
					 *
					 * 目前點數 - 初始點數 = 人物應有等級 - 50 -> 人物應有等級 = 50 + (目前點數 - 初始點數)
					 */
					int maxLevel = 1;

					if (diff > 0) {
						// 最高到99級:也就是?不支援轉生
						maxLevel = Math.min(50 + diff, 99);
					} else {
						maxLevel = pc.getLevel();
					}

					pc.setTempMaxLevel(maxLevel);
					pc.setTempLevel(1);
					pc.setInCharReset(true);
					pc.sendPackets(new S_CharReset(pc));
				} else {
					htmlid = this.enterUb(pc, npcId);
				}
			} else if (s.equalsIgnoreCase("par")) { // UB関連「アルティメット バトルに参加する」 副管理人経由
				htmlid = this.enterUb(pc, ((L1NpcInstance) obj).getNpcId());
			} else if (s.equalsIgnoreCase("info")) { // 「情報を確認する」「競技情報を確認する」
				final int npcId = ((L1NpcInstance) obj).getNpcId();
				if (npcId == 80085 || npcId == 80086 || npcId == 80087) {
				} else {
					htmlid = "colos2";
				}
			} else if (s.equalsIgnoreCase("sco")) { // UB関連「高得点者一覧を確認する」
				htmldata = new String[10];
				htmlid = "colos3";
			}

			else if (s.equalsIgnoreCase("haste")) { // ヘイスト師
				if (npcid == 70514) {
					L1BuffUtil.haste(pc, 1600 * 1000);
					//					pc.sendPackets(new S_ServerMessage(183));
					//					pc.sendPackets(new S_SkillHaste(pc.getId(), 1, 1600));
					//					pc.broadcastPacketAll(new S_SkillHaste(pc.getId(), 1, 0));
					//					pc.sendPacketsX8(new S_SkillSound(pc.getId(), 755));
					//					pc.setMoveSpeed(1);
					//					pc.setSkillEffect(STATUS_HASTE, 1600 * 1000);
					htmlid = ""; // ウィンドウを消す
				}
			}
			// 変身専門家
			else if (s.equalsIgnoreCase("skeleton nbmorph")) {
				this.poly(client, 2374);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("lycanthrope nbmorph")) {
				this.poly(client, 3874);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("shelob nbmorph")) {
				this.poly(client, 95);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("ghoul nbmorph")) {
				this.poly(client, 3873);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("ghast nbmorph")) {
				this.poly(client, 3875);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("atuba orc nbmorph")) {
				this.poly(client, 3868);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("skeleton axeman nbmorph")) {
				this.poly(client, 2376);
				htmlid = ""; // ウィンドウを消す
			} else if (s.equalsIgnoreCase("troll nbmorph")) {
				this.poly(client, 3878);
				htmlid = ""; // ウィンドウを消す
				/*
				} else if (npcid == 710036){
					if(s.equalsIgnoreCase("A1")){
						pc.set出售商品價格("1");
					}else if(s.equalsIgnoreCase("A2")){
						pc.set出售商品價格("2");
					}else if(s.equalsIgnoreCase("A3")){
						pc.set出售商品價格("3");
					}else if(s.equalsIgnoreCase("A4")){
						pc.set出售商品價格("4");
					}else if(s.equalsIgnoreCase("A5")){
						pc.set出售商品價格("5");
					}else if(s.equalsIgnoreCase("A6")){
						pc.set出售商品價格("6");
					}else if(s.equalsIgnoreCase("A7")){
						pc.set出售商品價格("7");
					}else if(s.equalsIgnoreCase("A8")){
						pc.set出售商品價格("8");
					}else if(s.equalsIgnoreCase("A9")){
						pc.set出售商品價格("9");
					}else if(s.equalsIgnoreCase("A0")){
						pc.set出售商品價格("0");
					}
					if(pc.get出售商品價格().length()>0){
					String[] qq= new String[3];
					qq[0]=pc.get出售商品價格().toString();
					htmldata = qq;
					htmlid ="AutoShop";
					}

					if(s.equalsIgnoreCase("確定販售")){
						final int price = Integer.valueOf(pc.get出售商品價格().toString());
						pc.清除出售商品價格();
						System.out.println(price);
					} */
				/*	} else if (npcid == 95532) {//opqlo 拉霸 賭王-小同
						if (s.equalsIgnoreCase("laba-start")) {//TODO 對話檔對應
							if(pc.hasSkillEffect(Laba_DELAY)||pc.hasSkillEffect(Laba_END)){return;}
							if(!pc.getInventory().checkItem(245174)){//拉霸招待券
								pc.sendPackets(new S_SystemMessage("身上未持有【拉霸招待券】。"));
								htmlid ="";
							}else if (pc.getInventory().consumeItem(40308,10000000)){//一億支票
								pc.getInventory().consumeItem(245174,1);
								pc.setSkillEffect(L1SkillId.Laba_START, 100);
								pc.sendPackets(new S_SystemMessage("拉霸開始----祝您中獎。"));
								htmlid ="";
							}else{
								pc.sendPackets(new S_SystemMessage("金幣不足 一千萬。"));
								htmlid ="";
							}
						}
				 */
			} else if (npcid == 710053){//海賊王拉霸
				if(s.equalsIgnoreCase("start")){
					if(pc.hasSkillEffect(Laba_DELAY) || pc.hasSkillEffect(Laba_START) || pc.hasSkillEffect(Laba_END)){
						pc.sendPackets(new S_SystemMessage("稍等一下才能再使用。"));
						return;
					}
					if(pc.getInventory().consumeItem(90308, 100)){
						pc.setSkillEffect(Laba_START, 10);
					}else{
						pc.sendPackets(new S_SystemMessage("商成元寶不足。"));
					}
				}
			} else if (npcid == 710071){
				if(Config.MIGRATE == false){
					return;
				}
				boolean logout = false;
				if (s.equalsIgnoreCase("AA")) {//TODO 對話檔對應
					StringBuilder newaccount = pc.getnewAccount();
					String[] msg = {newaccount.toString()};
					htmldata = msg;
					htmlid = "msq";
				}else if(s.equalsIgnoreCase("ok")){
					if(pc.getnewAccount().length()<=4){
						pc.sendPackets(new S_SystemMessage("帳號最少需要5個字。"));
						return;
					}
					StringBuilder newaccount = pc.getnewAccount();
					Connection con = null;
					PreparedStatement pstm = null;
					ResultSet rs = null;
					boolean repeat = false;
					try {
						con = DatabaseFactoryServer.get().getConnection();
						pstm = con.prepareStatement("SELECT login FROM `accounts` WHERE login =?");
						pstm.setString(1, newaccount.toString());
						rs = pstm.executeQuery();
						while (rs.next()) {
							repeat = true;
							break;
						}
					} catch (final SQLException e) {
						_log.log(Level.SEVERE,e.getLocalizedMessage(), e);
					} catch (final Exception e) {
						_log.log(Level.SEVERE,e.getLocalizedMessage(), e);
					} finally {
						SQLUtil.close(rs);
						SQLUtil.close(pstm);
						SQLUtil.close(con);
					}
					if(repeat){
						pc.sendPackets(new S_SystemMessage("這個帳號已經有人使用，請重新輸入。"));
						newaccount.delete(0, newaccount.length());
						return;
					}else{
						AccountReading.get().updateBanned(pc.getAccountName() , 1); //鎖定此帳戶
						checkTable.get().inset(pc);
						pc.sendPackets(new S_SystemMessage("資料轉移中，5分鐘後完成移民。"));
						pc.sendPackets(new S_SystemMessage("資料轉移期間請勿登入以免資料遺失。"));
						Thread.sleep(1000);
						logout = true;
					}
				}else{
					char s1 = s.charAt(0);
					StringBuilder newaccount = pc.getnewAccount();
					final int size = newaccount.length()-1;
					if(size<11){
						switch (s1) {
						case 'A':
							newaccount.append("A");
							break;
						case 'B':
							newaccount.append("B");
							break;
						case 'C':
							newaccount.append("C");
							break;
						case 'D':
							newaccount.append("D");
							break;
						case 'E':
							newaccount.append("E");
							break;
						case 'F':
							newaccount.append("F");
							break;

						case 'G':
							newaccount.append("G");
							break;

						case 'H':
							newaccount.append("H");
							break;

						case 'I':
							newaccount.append("I");
							break;

						case 'J':
							newaccount.append("J");
							break;

						case 'K':
							newaccount.append("K");
							break;

						case 'L':
							newaccount.append("L");
							break;

						case 'M':
							newaccount.append("M");
							break;

						case 'N':
							newaccount.append("N");
							break;

						case 'O':
							newaccount.append("O");
							break;

						case 'P':
							newaccount.append("P");
							break;

						case 'Q':
							newaccount.append("Q");
							break;

						case 'R':
							newaccount.append("R");
							break;

						case 'S':
							newaccount.append("S");
							break;

						case 'T':
							newaccount.append("T");
							break;

						case 'U':
							newaccount.append("U");
							break;

						case 'V':
							newaccount.append("V");
							break;
						case 'W':
							newaccount.append("W");
							break;
						case 'X':
							newaccount.append("X");
							break;
						case 'Y':
							newaccount.append("Y");
							break;
						case 'Z':
							newaccount.append("Z");
							break;

						case '0':
							newaccount.append("0");
							break;

						case '1':
							newaccount.append("1");
							break;

						case '2':
							newaccount.append("2");
							break;

						case '3':
							newaccount.append("3");
							break;

						case '4':
							newaccount.append("4");
							break;

						case '5':
							newaccount.append("5");
							break;

						case '6':
							newaccount.append("6");
							break;

						case '7':
							newaccount.append("7");
							break;

						case '8':
							newaccount.append("8");
							break;

						case '9':
							newaccount.append("9");
							break;

						case '-':
							if(size >=0){
								newaccount.deleteCharAt(size);
							}
							break;
						}
						if(s1 != '-'){
							pc.sendPackets(new S_Sound(4203));
						}else{
							pc.sendPackets(new S_Sound(3));
						}
					}else if(s.equalsIgnoreCase("-")){
						if(size >=0){
							newaccount.deleteCharAt(size);
						}
					}else{
						pc.sendPackets(new S_SystemMessage("帳號不可超過12個字元。"));
					}
					String[] msg = {newaccount.toString()};
					htmldata = msg;
					htmlid = "msq";
				}
				if(logout){
					pc.getNetConnection().close();
				}
			} else if(npcid == 710092){
				if(pc.HTMLID_TEMP == null){
					pc.HTMLID_TEMP = "18LaX10";
				}
				int point = 0;
				switch(s){
				case "x10": 
					pc.BET_RATE = 10;
					pc.HTMLID_TEMP = "18LaX10";
					pc.sendPackets(new S_SystemMessage("切換下注金額為: "+pc.BET_RATE+"元"));
					break;
				case "x50": 
					pc.BET_RATE = 50;
					pc.HTMLID_TEMP = "18LaX50";
					pc.sendPackets(new S_SystemMessage("切換下注金額為: "+pc.BET_RATE+"元"));
					break;
				case "x500":
					pc.BET_RATE = 500;
					pc.HTMLID_TEMP = "18LaX500";
					pc.sendPackets(new S_SystemMessage("切換下注金額為: "+pc.BET_RATE+"元"));
					break;
				case "b1":point =1;break;
				case "b2":point =2;break;
				case "b3":point =3;break;
				case "b4":point =4;break;
				case "b5":point =5;break;
				case "b6":point =6;break;
				case "b7":point =7;break;
				case "b8":point =8;break;
				case "b9":point =9;break;
				case "bb":point =10;break;
				case "bs":point =11;break;
				}
				if(point>0){
					final L1PcInventory inv = pc.getInventory();
					final L1ItemInstance money = inv.findItemId(90308);
					if(money !=null && money.getCount() >=pc.BET_RATE){
						if(Play18La.get().BetMoney(pc, point)){
							inv.removeItemByItemId(90308, pc.BET_RATE);
						}
					}else{
						pc.sendPackets(new S_SystemMessage("商成元寶("+pc.BET_RATE+") 不足，無法下注。"));
					}
				}
				htmlid = pc.HTMLID_TEMP;
			} else if (npcid == 600138) { // 賭城服務員 - 骰子
				char s1 = s.charAt(0);       
				if (!s.equalsIgnoreCase(null)){
					if (pc.hasSkillEffect(CASINO_DELAY)) { // 下注延遲，避免一直按
						return;
					}
					else if (pc.getInventory().consumeItem(40308,100000)){ // 先扣10 萬金幣
						pc.setSkillEffect(CASINO_DELAY,6000); // 6秒
					}else { 
						pc.sendPackets(new S_SystemMessage("您的摳摳不足^^!!"));
						return;
					}
				}
				switch (s1) {
				case 'A': // 小       
					play18La.playGame(pc,1,0,0);
					break;
				case 'B': // 大       
					play18La.playGame(pc,2,0,0);
					break;
					// 豹子部分
				case 'C': // 1點           
					play18La.playGame(pc,3,0,1);
					break;
				case 'D': // 2點       
					play18La.playGame(pc,3,0,2);
					break;
				case 'E': // 3點           
					play18La.playGame(pc,3,0,3);;
					break;
				case 'F': // 4點
					play18La.playGame(pc,3,0,4);

					break;

				case 'G': // 5點

					play18La.playGame(pc,3,0,5);

					break;

				case 'H': // 6點       

					play18La.playGame(pc,3,0,6);

					break;

					// 壓點數部分

				case '4': // 4點       

					play18La.playGame(pc,4,4,0);

					break;

				case '5': // 5點       

					play18La.playGame(pc,4,5,0);

					break;

				case '6': // 6點       

					play18La.playGame(pc,4,6,0);

					break;

				case '7': // 7點       

					play18La.playGame(pc,4,7,0);

					break;

				case '8': // 8點       

					play18La.playGame(pc,4,8,0);

					break;

				case '9': // 9點       

					play18La.playGame(pc,4,9,0);

					break;

				case 'I': // 10點       

					play18La.playGame(pc,4,10,0);

					break;

				case 'J': // 11點       

					play18La.playGame(pc,4,11,0);

					break;

				case 'K': // 12點       

					play18La.playGame(pc,4,12,0);

					break;

				case 'L': // 13點       

					play18La.playGame(pc,4,13,0);

					break;

				case 'M': // 14點       

					play18La.playGame(pc,4,14,0);

					break;

				case 'N': // 15點       

					play18La.playGame(pc,4,15,0);

					break;

				case 'O': // 16點       

					play18La.playGame(pc,4,16,0);

					break;

				case 'P': // 17點       

					play18La.playGame(pc,4,17,0);

					break;

				}
			} else if (npcid == 710062){
				if(s.equalsIgnoreCase("查詢PK次數")){
					final String[] data = {Integer.toString(pc.get_PKcount()) ,( pc.getLastKillerId()==0 ? "無" :CharacterTable.getInstance().getPcNameById(pc.getLastKillerId()))};
					htmldata = data;
					htmlid = "LCrime1";
				}else if(s.equalsIgnoreCase("查詢原諒")){
					final int killerId = pc.getLastKillerId();
					if(killerId <=0){
						pc.sendPackets(new S_SystemMessage("你被誰殺了??"));
						htmlid = "";
						return;
					}
					final L1Object targetOBJ = L1World.getInstance().findObject(killerId);
					if(targetOBJ ==null || !(targetOBJ instanceof L1PcInstance)){
						if(CharacterTable.getInstance().getPcNameById(killerId) ==null){
							pc.sendPackets(new S_SystemMessage("你被誰殺了??"));
							htmlid = "";
							return;
						}
					}
					final String[] data = {( pc.getLastKillerId()==0 ? "無" :CharacterTable.getInstance().getPcNameById(killerId))};
					htmldata = data;
					htmlid = "LCrime2";
				}else if(s.equalsIgnoreCase("查詢贖罪")){
					final String[] data = {Integer.toString(pc.get_PKcount())};
					htmldata = data;
					htmlid = "LCrime3";
				}else if(s.equalsIgnoreCase("贖罪")){
					int PKcount = pc.get_PKcount();
					if(PKcount <=0){
						pc.sendPackets(new S_SystemMessage("無犯罪紀錄，不須贖罪。"));
						htmlid = "";
					}else if(pc.getInventory().consumeItem(90308, 50)){
						PKcount-= 1;
						pc.remove_PKcount();
						if(PKcount >0){
							pc.sendPackets(new S_SystemMessage("消耗50元寶減少一次PK次數。"));
							final String[] data = {Integer.toString(pc.get_PKcount())};
							htmldata = data;
							htmlid = "LCrime3";
						}else{
							pc.sendPackets(new S_SystemMessage("贖罪後已經查無犯罪紀錄了。"));
							pc.setLastPk(null);
							htmlid = "";
						}
					}else{
						pc.sendPackets(new S_SystemMessage("商城元寶(50) 不足。"));
						htmlid = "";
					}
				}else if(s.equalsIgnoreCase("原諒")){
					final int killerId = pc.getLastKillerId();
					final L1Object targetOBJ = L1World.getInstance().findObject(killerId);
					if(targetOBJ ==null || !(targetOBJ instanceof L1PcInstance)){
						if(CharacterTable.getInstance().getPcNameById(killerId) !=null){
							loadPkCount(killerId , true);
							pc.sendPackets(new S_SystemMessage(CharacterTable.getInstance().getPcNameById(killerId)+" 獲得原諒，殺人次數減少。"));
							pc.removeKillerId();
						}
						htmlid = "";
					}else{
						final L1PcInstance tragetPc = (L1PcInstance) targetOBJ;
						if(tragetPc.isInHell() == false){
							tragetPc.remove_PKcount();
							tragetPc.sendPackets(new S_SystemMessage("玩家: "+pc.getName()+" 原諒你的行為。"));
							pc.sendPackets(new S_SystemMessage(tragetPc.getName()+" 獲得原諒，殺人次數減少。"));
						}
						pc.removeKillerId();
						htmlid = "";
					}
				}else if(s.equalsIgnoreCase("查詢保釋")){
					final Set<Integer>set = HellTimeReading.get().getOrderSet();
					if(set.size() <=0){
						pc.sendPackets(new S_SystemMessage("目前沒有任何可保釋的對象。"));
						htmlid = "";
					}else{
						final HashMap<Integer , Integer>map = new HashMap<Integer , Integer>();
						final Iterator<Integer> iteratoe = set.iterator();
						final String[] data = {"1","","無","無","無","無","無","無","無","無","無"};
						int orderid = 1;
						while(iteratoe.hasNext()){
							final int tragetid = iteratoe.next();
							map.put(orderid, tragetid);
							if(orderid <=10){
								data[orderid] = CharacterTable.getInstance().getPcNameById(tragetid);
							}
							orderid++;
						}
						pc.setBailMentList(map);
						htmldata = data;
						htmlid = "LCrime4";
					}
				}else if(s.equalsIgnoreCase("上一頁")){
					int page = pc.getBailMentPage()-1;
					pc.setBailMentPage(false);// i--
					int minOrderId = (page * 10) - 9;
					if(pc.getBailMentObjid(minOrderId) == 0){
						pc.sendPackets(new S_SystemMessage("目前沒有任何可保釋的對象。"));
						pc.setBailMentPage(true);// i++
					}else{
						final String[] data = {String.valueOf(page),"","無","無","無","無","無","無","無","無","無"};
						final int maxOrderId = page *10;
						int i = 1;
						do{
							final int traget = pc.getBailMentObjid(minOrderId);
							if(traget <=0){
								break;
							}
							data[i]= CharacterTable.getInstance().getPcNameById(traget);
							minOrderId ++;
							i++;
						}
						while( minOrderId <=maxOrderId);
						htmldata = data;
						if(page ==1){
							htmlid = "LCrime4";
						}else{
							htmlid = "LCrime5";
						}
					}
				}else if(s.equalsIgnoreCase("下一頁")){
					int page = pc.getBailMentPage()+1;
					pc.setBailMentPage(true);// i++
					int minOrderId = (page * 10) - 9;
					if(pc.getBailMentObjid(minOrderId) == 0){
						pc.sendPackets(new S_SystemMessage("目前沒有任何可保釋的對象。"));
						pc.setBailMentPage(false);// i--
					}else{
						final String[] data = {String.valueOf(page),"","無","無","無","無","無","無","無","無","無"};
						final int maxOrderId = page *10;
						int i = 1;
						do{
							final int traget = pc.getBailMentObjid(minOrderId);
							if(traget <=0){
								break;
							}
							data[i]= CharacterTable.getInstance().getPcNameById(traget);
							minOrderId ++;
							i++;
						}
						while( minOrderId <=maxOrderId);
						htmldata = data;
						htmlid = "LCrime5";
					}
				}else if(s.equalsIgnoreCase("保釋")){
					final int traget = pc.getBailMentId();
					if(traget <=1){
						htmlid = "";
					}else{
						if(pc.getInventory().consumeItem(90308, 150)){
							int helltime;
							final	L1PcInstance tgpc = (L1PcInstance) L1World.getInstance().findObject(traget);
							final	L1HellTime temp = HellTimeReading.get().getTempByObjid(traget);
							if(tgpc == null){
								helltime = temp.getHelltime();
							}else{
								helltime = tgpc.getHellTime();
							}
							if(helltime <=1){
								pc.sendPackets(new S_SystemMessage("你要保釋的對象已經出獄。"));
								htmlid = "";
							}else{
								helltime = Math.max(1, helltime -3600);
								if(tgpc == null){
									temp.setHellTime(helltime);
									CharacterTable.updateHellTime(traget, helltime);
									pc.sendPackets(new S_SystemMessage("保釋成功，[ "+CharacterTable.getInstance().getPcNameById(traget)+" ]監禁時間減少 1H。"));
								}else{
									tgpc.setHellTime(helltime);
									pc.sendPackets(new S_SystemMessage("保釋成功，[ "+tgpc.getName()+" ]監禁時間減少 1H。"));
									tgpc.sendPackets(new S_SystemMessage("[ "+pc.getName()+" ]保釋了你，監禁時間減少 1H。"));
								}
								if(helltime <=1){
									HellTimeReading.get().EndHell(traget);
									pc.sendPackets(new S_SystemMessage("你要保釋的對象已經出獄。"));
									htmlid = "";
								}else{
									htmlid = "LCrime6";	
									NumberFormat nf = NumberFormat.getInstance();
									nf.setMaximumFractionDigits( 2 );    //小數後兩位
									String[] data = {
											CharacterTable.getInstance().getPcNameById(traget) , 
											String.valueOf(helltime),
											String.valueOf(nf.format((helltime / 3600D)))
									};
									htmldata = data;
								}
							}
						}else{
							pc.sendPackets(new S_SystemMessage("商城元寶(150) 不足。"));
							htmlid = "";
						}
					}
				}else if(s.equalsIgnoreCase("不原諒")){
					final int killerId = pc.getLastKillerId();
					final L1Object targetOBJ = L1World.getInstance().findObject(killerId);
					if(targetOBJ ==null || !(targetOBJ instanceof L1PcInstance)){
						if(CharacterTable.getInstance().getPcNameById(killerId) !=null){
							loadPkCount(killerId , false);
							pc.removeKillerId();
							htmlid = "";
						}
					}else{
						final L1PcInstance tragetPc = (L1PcInstance) targetOBJ;
						if(tragetPc.isInHell() == false){
							tragetPc.add_PKcount();
							tragetPc.sendPackets(new S_SystemMessage("玩家: "+pc.getName()+" 認為你的行為不可赦免，PK次數上升。"));
							pc.sendPackets(new S_SystemMessage("由於你不原諒 ，使得 "+tragetPc.getName()+" PK次數上升。"));
						}
						pc.removeKillerId();
						htmlid = "";
					}
				}else{
					int orderid  = pc.getBailMentPage() *10 -10;
					if(s.equalsIgnoreCase("保1")){
						orderid +=1;
					}else if(s.equalsIgnoreCase("保2")){
						orderid +=2;
					}else if(s.equalsIgnoreCase("保3")){
						orderid +=3;
					}else if(s.equalsIgnoreCase("保4")){
						orderid +=4;
					}else if(s.equalsIgnoreCase("保5")){
						orderid +=5;
					}else if(s.equalsIgnoreCase("保6")){
						orderid +=6;
					}else if(s.equalsIgnoreCase("保7")){
						orderid +=7;
					}else if(s.equalsIgnoreCase("保8")){
						orderid +=8;
					}else if(s.equalsIgnoreCase("保9")){
						orderid +=9;
					}else if(s.equalsIgnoreCase("保10")){
						orderid +=10;
					}
					final int traget = pc.getBailMentObjid(orderid);
					if(traget <=0){
						pc.sendPackets(new S_SystemMessage("目前沒有任何可保釋的對象。"));
					}else{
						pc.setBailMentId(traget);
						final int helltime;
						L1PcInstance tgpc = (L1PcInstance) L1World.getInstance().findObject(traget);
						if(tgpc == null){
							helltime = HellTimeReading.get().getTempByObjid(traget).getHelltime();
						}else{
							helltime = tgpc.getHellTime();
						}
						NumberFormat nf = NumberFormat.getInstance();
						nf.setMaximumFractionDigits( 2 );    //小數後兩位
						String[] data = {
								CharacterTable.getInstance().getPcNameById(traget) , 
								String.valueOf(helltime),
								String.valueOf(nf.format((helltime / 3600D)))
						};
						htmlid = "LCrime6";
						htmldata = data;
					}
				}
			} else if (npcid == 710050){
				if(s.equalsIgnoreCase("買彩券")){

					if(pc.進行中){
						pc.sendPackets(new S_SystemMessage("遊戲進行中，請將遊戲完成。"));
						htmldata=pc.get刮刮樂號碼();
					}else{
						final L1PcInventory inv = pc.getInventory();
						final L1ItemInstance item = inv.findItemId(90308);
						if (item !=null && item.getCount()>=30) {
							final long count = inv.removeItem(item , 30) ;
							if(count >0){
								htmldata =刮刮樂.getInstance().startGame(pc, -1);
								pc.進行中 = true;
								pc.sendPackets(new S_Sound(1));
								刮刮樂.getInstance().addBetCount();
							}
						}else{
							pc.sendPackets(new S_SystemMessage("一張彩票需要 30元寶。"));
							htmlid ="";
						}
					}
				}else if(s.equalsIgnoreCase("刮0")){
					htmldata = 刮刮樂.getInstance().startGame(pc, 0);
					if(htmldata == null){
						htmlid ="";
					}
				}else if (s.equalsIgnoreCase("刮1")){
					htmldata =刮刮樂.getInstance().startGame(pc, 1);
					if(htmldata == null){
						htmlid ="";
					}
				}else if (s.equalsIgnoreCase("刮2")){
					htmldata =刮刮樂.getInstance().startGame(pc, 2);
					if(htmldata == null){
						htmlid ="";
					}
				}else if (s.equalsIgnoreCase("刮3")){
					htmldata =刮刮樂.getInstance().startGame(pc, 3);
					if(htmldata == null){
						htmlid ="";
					}
				}else if (s.equalsIgnoreCase("刮4")){
					htmldata =刮刮樂.getInstance().startGame(pc, 4);
					if(htmldata == null){
						htmlid ="";
					}
				}else if (s.equalsIgnoreCase("刮5")){
					htmldata =刮刮樂.getInstance().startGame(pc, 5);
					if(htmldata == null){
						htmlid ="";
					}
				}else if (s.equalsIgnoreCase("刮6")){
					htmldata =刮刮樂.getInstance().startGame(pc, 6);
					if(htmldata == null){
						htmlid ="";
					}
				}else if (s.equalsIgnoreCase("刮7")){
					htmldata =刮刮樂.getInstance().startGame(pc, 7);
					if(htmldata == null){
						htmlid ="";
					}
				}else if (s.equalsIgnoreCase("刮8")){
					htmldata =刮刮樂.getInstance().startGame(pc, 8);
					if(htmldata == null){
						htmlid ="";
					}
				}else
					if(s.equalsIgnoreCase("領獎")){
						if(!刮刮樂.getInstance().checkOver(pc)){
							pc.sendPackets(new S_SystemMessage("遊戲進行中，請將遊戲完成。"));
							return;
						}
						pc.進行中 = false;
						final int count = 刮刮樂.getInstance().get中獎金額(pc.get中獎次數());
						if(count >0){
							pc.sendPackets(new S_Sound(4826));
							final L1ItemInstance item = ItemTable.getInstance().createItem(90308);
							if (item != null) {
								item.setCount(count);
								pc.getInventory().storeItem(item);
								final StringBuilder log = new StringBuilder();
								log.append("IP:").append(pc.getNetConnection().getIp().toString()).append("	玩家: ").append(pc.getName()).append("	刮刮樂中獎，獲得 ").append(item.getLogName()).append("	刮刮樂號碼為:");
								for(final String ss : pc.get刮刮樂號碼()){
									log.append(ss);
								}
								log.append("	)時間:(").append(new Timestamp(System.currentTimeMillis()));
								各項記錄輸出.LogSave(31, log.toString());
							}
							pc.sendPackets(new S_SystemMessage("恭喜中獎！獲得 "+item.getLogName()+"。"));
							if(count>=500){
								L1World.getInstance().broadcastPacketToAll(new S_SystemMessage("玩家"+pc.getName()+"刮刮樂中獎，獲得 "+item.getLogName()+"。"));
							}
							pc.add中獎次數(-pc.get中獎次數());
							刮刮樂.getInstance().addPayCount(count);
						}else{
							pc.sendPackets(new S_Sound(301));
						}

						pc.set刮刮樂號碼(null);
					}
				if(pc.進行中){
					htmlid ="LTicket-2";
				}else{
					htmlid ="LTicket-1";
				}
			} else if (npcid == 600000){
				if (s.equalsIgnoreCase("gogogo")) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					if(!pc.isGm()){
						if(pc.getClanid() ==0){
							pc.sendPackets(new S_SystemMessage("\\aH你沒有血盟。"));
							htmlid = "";
							return;
						}
						if(pc.getClan().getCastleId() ==0){
							pc.sendPackets(new S_SystemMessage("\\aH你的血盟沒有擁有城堡。"));
							htmlid = "";
							return;
						}
						final int CastleId = L1CastleLocation.getCastleIdByArea(npc.getLocation());
						if(pc.getClan().getCastleId() != CastleId){
							pc.sendPackets(new S_SystemMessage("\\aH這座城堡不屬於你的血盟。"));
							htmlid = "";
							return;
						}
					}
					//htmlid = "amisoo2";
					L1Teleport.teleport(pc, 32737, 32861,(short)248,5, true);
				}
			} else if (npcid ==600012){
				if(s.equalsIgnoreCase("升級階段")){
					pc.sendPackets(new S_UpdateItemList_Level(objid , pc));
					pc._coverType = 99;
				} else if(s.equalsIgnoreCase("換單手")){
					pc.sendPackets(new S_UpdateItemList_Cover(objid , pc , 1));
				} else if(s.equalsIgnoreCase("換雙手")){
					pc.sendPackets(new S_UpdateItemList_Cover(objid , pc , 2));
				} else if(s.equalsIgnoreCase("換弓")){
					pc.sendPackets(new S_UpdateItemList_Cover(objid , pc , 3));
				} else if(s.equalsIgnoreCase("換法仗")){
					pc.sendPackets(new S_UpdateItemList_Cover(objid , pc , 4));
				} else if(s.equalsIgnoreCase("換雙刀")){
					pc.sendPackets(new S_UpdateItemList_Cover(objid , pc , 5));
				} else if(s.equalsIgnoreCase("換鎖鏈")){
					pc.sendPackets(new S_UpdateItemList_Cover(objid , pc , 6));
				} else if(s.equalsIgnoreCase("換奇古")){
					pc.sendPackets(new S_UpdateItemList_Cover(objid , pc , 7));
				} else if(s.equalsIgnoreCase("換鐵手")){
					pc.sendPackets(new S_UpdateItemList_Cover(objid , pc , 8));
				}else if(s.equalsIgnoreCase("白轉祝")){
					pc.sendPackets(new S_UpdateItemList_Bless(objid , pc));
					pc._coverType = 98;
				}
			} else if (npcid == 710036){ //opqlo 神的武器精鍊師
				if(s.equalsIgnoreCase("強化開始")){
					final HashMap<Integer , L1ItemInstance>map =pc.getInventory().getEquippedItem();
					final int[] types = {0,1,4,2,3,10,5,7,6};
					final String[]var =new String[types.length];
					for(int i=0; i<types.length; i++){
						final L1ItemInstance item = map.get(types[i]);
						if(item == null){
							var[i] = "未裝備";
						}else{
							final int lv = item.getEnchantLevel();
							var[i] = lv>0?  "+"+lv+" "+item.getName() : item.getName();
						}
					}
					map.clear();
					htmldata = var;
					htmlid = "GodWeaponL";
				}else{
					L1ItemInstance item =null;
					final L1PcInventory inv = pc.getInventory();
					switch(s){
					case "武器":
						item = pc.getWeapon();
						htmlid = "GodWeaponW";
						break;
					case "頭盔":
						item = inv.getEquippedItem(2, 1);
						htmlid = "GodWeaponA";
						break;
					case "斗篷":
						item = inv.getEquippedItem(2, 4);
						htmlid = "GodWeaponA";
						break;
					case "盔甲":
						item = inv.getEquippedItem(2, 2);
						htmlid = "GodWeaponA";
						break;
					case "內衣":
						item = inv.getEquippedItem(2, 3);
						htmlid = "GodWeaponA";
						break;
					case "腰帶":
						item = inv.getEquippedItem(2, 10);
						htmlid = "GodWeaponA";
						break;
					case "手套":
						item = inv.getEquippedItem(2, 5);
						htmlid = "GodWeaponA";
						break;
					case "盾牌":
						item = inv.getEquippedItem(2, 7);
						if(item == null){
							item = inv.getEquippedItem(2, 13);
						}
						htmlid = "GodWeaponA";
						break;
					case "長靴":
						item = inv.getEquippedItem(2, 6);
						htmlid = "GodWeaponA";
						break;
					case "臂甲":
						item = inv.getEquippedItem(2, 13);
						htmlid = "GodWeaponA";
						break;
					}
					if(item == null){
						item = pc.EACHANTING_ITEM;
						if(item == null){
							pc.sendPackets(new S_SystemMessage("這個欄位沒有裝備物品。"));
							pc.EACHANTING_ITEM = null;
							return;
						}
					}
					if(!item.isIdentified()){
						pc.sendPackets(new S_SystemMessage("必須要先鑑定才可強化。"));
						pc.EACHANTING_ITEM = null;
						return;
					}
					final int type2 = item.getItem().getType2();
					if(type2 ==0){
						pc.EACHANTING_ITEM = null;
						return;
					}
					final int nowLevel = item.getEnchantLevel();
					final int maxLv = item.getItem().getType2()==1? 3000:400;
					if(nowLevel >= maxLv){
						pc.sendPackets(new S_SystemMessage("最高強化至 +"+maxLv+" 。"));
						pc.EACHANTING_ITEM = null;
						return;
					}
					if(htmlid== null){
						final L1ItemInstance money = inv.findItemId(90308);
						if(money == null){
							pc.sendPackets(new S_SystemMessage("你的身上並沒有【商城元寶】。"));
							pc.EACHANTING_ITEM = null;
							return;
						}
						final int moneyCount = (int) money.getCount();
						boolean ok = false;
						int enchantLevel = 0;
						if (s.equalsIgnoreCase("強化+1")) {
							if(moneyCount >=10){
								enchantLevel = 1;
								ok = true;
							}
						}else if (s.equalsIgnoreCase("強化+10")) {
							if(moneyCount >=100){
								enchantLevel = 10;
								ok = true;
							}
						}else if (s.equalsIgnoreCase("強化+100")) {
							if(moneyCount >=1000){
								enchantLevel = 100;
								ok = true;
							}
						}
						if(ok && enchantLevel>0){
							if(item.isEquipped()){
								enchantLevel = Math.min(maxLv - nowLevel, enchantLevel);
								final int removeCount = enchantLevel*10;
								final StringBuilder log = new StringBuilder();
								log.append("IP(").append(client.getIp()).append(")	玩家: ").append(pc.getName()).append("	武器: ").append(item.getLogName()).append(" [").append(item.getId()).append("]	")
								.append("	強化值上升: ").append(enchantLevel).append("	身上元寶:").append((moneyCount-removeCount)).append("】時間:(")
								.append(new Timestamp(System.currentTimeMillis()))
								.append(")。");
								各項記錄輸出.LogSave(34, log.toString());
								pc.sendPackets(new S_SystemMessage(item.getLogName()+"發出強烈閃光。"));
								pc.sendPackets(new S_SystemMessage("消耗 "+removeCount+" 個元寶，強化值上升[ "+enchantLevel+" ]。"));
								item.setEnchantLevel(nowLevel+enchantLevel);
								inv.updateItem(item, L1PcInventory.COL_ENCHANTLVL);
								inv.saveItem(item, L1PcInventory.COL_ENCHANTLVL);
								inv.removeItem(money, removeCount);
								final String[]msg = {"+"+item.getEnchantLevel()+" "+item.getName()};
								htmldata = msg;
								if(type2 == 1){
									((L1NpcInstance)obj).broadcastPacketX8(new S_EffectLocation(pc.getX() , pc.getY() , 747 ));
									htmlid = "GodWeaponW";
								}else{
									((L1NpcInstance)obj).broadcastPacketX8(new S_EffectLocation(pc.getX() , pc.getY() ,  748 ));	
									htmlid = "GodWeaponA";
								}
							}else{
								pc.sendPackets(new S_SystemMessage(item.getLogName()+" 必須裝備後才可以強化。"));
							}
						}else{
							pc.sendPackets(new S_SystemMessage("【商城元寶】不足。"));
							pc.EACHANTING_ITEM = null;
						}
					}else{
						final String[]msg = {item.getEnchantLevel()>0? "+"+item.getEnchantLevel()+" "+item.getName() : item.getName()};
						htmldata = msg;
						pc.EACHANTING_ITEM = item;
					}
				}
			} else if (npcid == 81270) { //TODO 神女優莉絲
				if (s.equalsIgnoreCase("0")) {//TODO 對話檔對應
					if (pc.getInventory().checkItem(49289)) { //TODO 贖罪聖書
						final int allLawful = pc.getLawful() + 30000; //TODO 正義值+30000
						if (pc.getLawful() >= 32767) {
							pc.sendPackets(new S_SystemMessage("沒有使用贖罪聖書的必要。"));
							return;
						} else if (pc.getLawful() + 30000 >= 32767) {
							pc.setLawful(32767);
							pc.getInventory().consumeItem(49289, 1); //TODO 贖罪聖書刪除
						} else {
							pc.setLawful(allLawful);
							pc.getInventory().consumeItem(49289, 1); //TODO 贖罪聖書刪除
						}
						pc.sendPacketsAll(new S_Lawful(pc.getId(), pc.getLawful()));
						pc.save(); //TODO DB儲存
						htmlid = "yuris2"; //TODO 對話檔對應
					} else {
						htmlid = "yuris3"; //TODO 對話檔對應
					}
				}
				/************************opqlo 城堡升級系統 *******************************/
			} else if (npcid == 710037){
				final L1NpcInstance npc = (L1NpcInstance) obj;
				if(npc.hasSkillEffect(對話延遲)){
					return;
				}
				npc.setSkillEffect(對話延遲, 50);
				final int CastleId = L1CastleLocation.getCastleIdByArea(npc.getLocation()) , pcCastleId = pc.getClan().getCastleId();
				boolean close = false;
				if(ServerWarExecutor.get().isNowWar(CastleId)){
					pc.sendPackets(new S_SystemMessage("\\aH攻城戰中，無法使用此功能。"));
					close=true;
				}else if(pcCastleId ==0){
					pc.sendPackets(new S_SystemMessage("\\aH你的血盟沒有擁有城堡。"));
					close=true;
				}else if(pcCastleId != CastleId){
					pc.sendPackets(new S_SystemMessage("\\aH這座城堡不屬於你的血盟。"));
					close=true;
				}
				if(close){
					htmlid = "";
					return;
				}
				final L1Castle castle = CastleTable.getInstance().getCastleTable(CastleId);
				if(castle == null){
					htmlid = "";
				}else{
					if (s.equalsIgnoreCase("貢獻經驗值")) {
						final byte CastleLv = castle.getCastleLv();
						if(CastleLv >=相關列表.getInstance().MaxLevel){
							pc.sendPackets(new S_SystemMessage("\\aH城堡已達到最高等級。"));
						}else{
							final L1ItemInstance item = pc.getInventory().findItemId(780044);
							if(item == null || item.getCount() <=0){
								pc.sendPackets(new S_SystemMessage("\\aH身上沒有城堡貢獻石。"));
							}else{
								pc.sendPackets(new S_HowManyMake(objid , (int) item.getCount() , s ));
							}
						}
					}else if(s.equalsIgnoreCase("查詢城堡狀態")) {
						htmlid = "CastleHa1";
						final String[] value = {castle.getName() , String.valueOf(castle.getCastleLv()) , String.valueOf(castle.getCastleExp()),String.valueOf(castle.getNextLvNeedExp()),String.valueOf(castle.getSkillPoint())};
						htmldata = value;
					}else if(s.equalsIgnoreCase("城堡專屬技能")){
						htmlid = "CastleHa2";
						final String[] value = {castle.getName() , String.valueOf(castle.getCastleLv()) , String.valueOf(castle.getCastleExp()),String.valueOf(castle.getNextLvNeedExp()),String.valueOf(castle.getSkillPoint()),String.valueOf(castle.getSkillList()[1]),String.valueOf(castle.getSkillList()[2]), String.valueOf(castle.getSkillList()[3]), String.valueOf(castle.getSkillList()[4])};
						htmldata = value;
					}else{
						int itemid = 0;

						if(s.equalsIgnoreCase("兌換瓶裝1")){//610058	瓶裝[狂暴打擊]
							itemid = 610058;
						}else if(s.equalsIgnoreCase("兌換瓶裝2")){//610059	瓶裝[鋼鐵防禦]
							itemid = 610059;
						}else if(s.equalsIgnoreCase("兌換瓶裝3")){//610060	瓶裝[賞金獵人]
							itemid = 610060;
						}else if(s.equalsIgnoreCase("兌換瓶裝4")){//610061	瓶裝[狩獵專長]
							itemid = 610061;
						}
						if(itemid !=0){
							final L1ItemInstance item = pc.getInventory().findItemId(90308);
							if(item == null || item.getCount() <15){
								pc.sendPackets(new S_SystemMessage("商城元寶(15) 不足。"));
								return;
							}
							byte type = 0;
							switch(itemid){
							case 610058:
								type =1;
								break;
							case 610059:
								type =2;
								break;
							case 610060:
								type =3;
								break;
							case 610061:
								type =4;
								break;
							}
							if(!castle.checkSkillLv(type)){
								pc.getInventory().removeItemByItemId(90308, 15);
								createNewItem(pc,itemid , 1);
							}else{
								pc.sendPackets(new S_SystemMessage("\\aH尚未學習這個技能。"));
							}
							return;
						}
						final L1ItemInstance item = pc.getInventory().findItemId(780044);
						final int count ;
						byte type = 0;
						boolean look = false;
						if(s.equalsIgnoreCase("狂暴打擊")){type =1 ; htmlid = "CastleHaAtk"; look= true;}
						else if(s.equalsIgnoreCase("鋼鐵防禦")){type = 2; htmlid = "CastleHaDef"; look= true;}
						else if(s.equalsIgnoreCase("賞金獵人")){type = 3; htmlid = "CastleHaDrop"; look= true;}
						else if(s.equalsIgnoreCase("狩獵專長")){type = 4; htmlid = "CastleHaExp"; look= true;}

						if(item == null){
							count =0;
						}else{
							count =(int) item.getCount();
						}
						boolean removeSkill = false;
						if(s.equalsIgnoreCase("施放狂暴打擊")) {
							htmlid = "CastleHaAtk";
							type =1 ;
							removeSkill = true;
						}else if(s.equalsIgnoreCase("施放鋼鐵防禦")) {
							htmlid = "CastleHaDef";
							type =2 ;
							removeSkill = true;
						}else if(s.equalsIgnoreCase("施放賞金獵人")) {
							type =3 ;
							removeSkill = true;
							htmlid = "CastleHaDrop";
						}else if(s.equalsIgnoreCase("施放狩獵專長")) {
							type =4 ;
							removeSkill = true;
							htmlid = "CastleHaExp";
						}
						byte skillLv = castle.getSkillList()[type];

						int removeItemCount = skillLv *100;
						/************************************************************/
						if(removeSkill && count <= removeItemCount){
							pc.sendPackets(new S_SystemMessage("\\aH身上貢獻石數量不足。"));
						}else if(removeSkill){
							if(!castle.checkSkillLv(type)){
								pc.getInventory().removeItem(item, removeItemCount);
								castle.useCastleSkill(type, pc, npc , 3600);
							}else{
								pc.sendPackets(new S_SystemMessage("\\aH尚未學習這個技能。"));
							}
						}else{
							if(!look){
								if(pc.getClan().getLeaderId() != pc.getId()){
									pc.sendPackets(new S_SystemMessage("\\aH只有血盟君主可以操作這個指令。"));
									return;
								}
								if(castle.getSkillPoint()<=0){
									pc.sendPackets(new S_SystemMessage("\\aH技能點數不足。"));
									return;
								}
								if(s.equalsIgnoreCase("升級狂暴打擊")){
									type = 1;
									htmlid = "CastleHaAtk";
								}else if(s.equalsIgnoreCase("升級鋼鐵防禦")){
									type = 2;
									htmlid = "CastleHaDef";
								}else if(s.equalsIgnoreCase("升級賞金獵人")){
									type = 3;
									htmlid = "CastleHaDrop";
								}else if(s.equalsIgnoreCase("升級狩獵專長")){
									type = 4;
									htmlid = "CastleHaExp";
								}
								if(type <=0 || type >4){
									return;
								}
								skillLv = castle.getSkillList()[type];
								if(skillLv >=10){
									pc.sendPackets(new S_SystemMessage("\\aH技能已經是最高等級。")); return;
								}else{
									pc.sendPackets(new S_SystemMessage("\\aH技能等級提升。"));
								}
								castle.addSkillLv(type);
								skillLv++;
								removeItemCount = skillLv *100;
							}
						}
						/************************************************************/

						final String[] value = {String.valueOf(skillLv) , String.valueOf(removeItemCount),String.valueOf(count),String.valueOf(castle.getSkillPoint())};
						htmldata = value;
					}
				}
				/************************opqlo 城堡升級系統 *******************************/
			} else if (npcid == 710038){
				if (s.equalsIgnoreCase("領每日補助")) {
					final String STime = ""+GetNowTime.GetNowMonth()+GetNowTime.GetNowDay();
					final int Time = Integer.parseInt(STime);
					if(pc.getQuest().get_step(L1Quest.QUEST_opqlo新手) != Time){
						pc.getQuest().set_step(L1Quest.QUEST_opqlo新手, Time);
						final Timestamp delDay = new Timestamp(System.currentTimeMillis()+ 14400000);
						final L1PcInventory inv = pc.getInventory();
						L1ItemInstance item;
						for(final int Id : 新手每日補助){
							item = ItemTable.getInstance().createItem(Id);
							if(inv.checkAddItem(item, 1 , true) ==0 ){
								item.setDeleteDate(delDay);
								item.setCount(1);
								item.setIdentified(true);
								switch(item.getItem().getType2()){
								case 1: item.setEnchantLevel(2000); break;
								case 2:
									switch(item.getItem().getType()){
									//1:helm 2:armor 5:glove 6:boots
									case 1:case 2:case 5:case 6:
										item.setEnchantLevel(100); break;
									}
									break;
								}
								pc.getInventory().storeItem(item);
								pc.sendPackets(new S_SystemMessage("\\aE"+ item.getName() + "(4H) 使用期限:" +item.getDeleteDate()));
							}
						}
					}else{
						pc.sendPackets(new S_SystemMessage("\\aE每天只能領取一次，不能貪心哦!"));
					}
				}
				htmlid = "";
			}
			// 然柳寵物商
			else if (npcid == 70077 // 羅德尼
					|| npcid == 81290) { // 班酷
				int consumeItem = 0;
				int consumeItemCount = 0;
				int petNpcId = 0;
				int petItemId = 0;// 40314 低等寵物項圈
				int upLv = 0; // 等級
				long lvExp = 0; // LV.upLv 經驗值
				String msg = "";
				if (s.equalsIgnoreCase("buy 1")) {
					petNpcId = 45042;// 杜賓狗
					consumeItem = L1ItemId.ADENA;
					consumeItemCount = 50000;
					petItemId = 40314;
					upLv = 5;
					lvExp = ExpTable.getExpByLevel(upLv);
					msg = "金幣";
				} else if (s.equalsIgnoreCase("buy 2")) {
					petNpcId = 45034;// 牧羊犬
					consumeItem = L1ItemId.ADENA;
					consumeItemCount = 50000;
					petItemId = 40314;
					upLv = 5;
					lvExp = ExpTable.getExpByLevel(upLv);
					msg = "金幣";
				} else if (s.equalsIgnoreCase("buy 3")) {
					petNpcId = 45046;// 小獵犬
					consumeItem = L1ItemId.ADENA;
					consumeItemCount = 50000;
					petItemId = 40314;
					upLv = 5;
					lvExp = ExpTable.getExpByLevel(upLv);
					msg = "金幣";
				} else if (s.equalsIgnoreCase("buy 4")) {
					petNpcId = 45047;// 聖伯納犬
					consumeItem = L1ItemId.ADENA;
					consumeItemCount = 50000;
					petItemId = 40314;
					upLv = 5;
					lvExp = ExpTable.getExpByLevel(upLv);
					msg = "金幣";
				} else if (s.equalsIgnoreCase("buy 7")) {
					petNpcId = 97023;// 淘氣龍
					consumeItem = 47011;
					consumeItemCount = 1;
					petItemId = 40314;
					upLv = 5;
					lvExp = ExpTable.getExpByLevel(upLv);
					msg = "淘氣幼龍蛋";
				} else if (s.equalsIgnoreCase("buy 8")) {
					petNpcId = 97022;// 頑皮龍
					consumeItem = 47012;
					consumeItemCount = 1;
					petItemId = 40314;
					upLv = 5;
					lvExp = ExpTable.getExpByLevel(upLv);
					msg = "頑皮幼龍蛋";
				}
				if (petNpcId > 0) {
					if (!pc.getInventory().checkItem(consumeItem, consumeItemCount)) {
						pc.sendPackets(new S_ServerMessage(337, msg));
					} else if (pc.getInventory().getSize() > 180) {
						pc.sendPackets(new S_ServerMessage(337, "身上空間"));
					} else if (pc.getInventory().checkItem(consumeItem,consumeItemCount)) {
						pc.getInventory().consumeItem(consumeItem, consumeItemCount);
						final L1PcInventory inv = pc.getInventory();
						final L1ItemInstance petamu = inv.storeItem(petItemId, 1);
						if (petamu != null) {
							PetTable.getInstance().buyNewPet(petNpcId, petamu.getId() + 1,petamu.getId(), upLv, lvExp);//FIXME getID() +1 ?? 可能需要修改
							pc.sendPackets(new S_ItemName(petamu));
							pc.sendPackets(new S_ServerMessage(403, petamu.getName()));
						}
					}
				} else {
					pc.sendPackets(new S_SystemMessage("對話檔版本不符，請下載更新"));
				}
				htmlid = "";
			} else if (npcid == 1234568) {//opqlo 伺服器排名
				//final	L1NpcInstance npc = (L1NpcInstance) obj;
				//if (!npc.hasSkillEffect(123456)){
				if (pc.getInventory().consumeItem(L1ItemId.ADENA, 10000)) {
					if (s.equalsIgnoreCase("request Place1")) {//全職業排行
						htmldata = Place.getInstance().getPrince(0);
					}else if (s.equalsIgnoreCase("request Place2")) {//王子排行
						htmldata = Place.getInstance().getPrince(1);
					}else if (s.equalsIgnoreCase("request Place3")) {//騎士排行
						htmldata = Place.getInstance().getPrince(2);
					}else if (s.equalsIgnoreCase("request Place4")) {//妖精排行
						htmldata = Place.getInstance().getPrince(3);
					}else if (s.equalsIgnoreCase("request Place5")) {//法師排行
						htmldata = Place.getInstance().getPrince(4);
					}else if (s.equalsIgnoreCase("request Place6")) {//黑妖排行
						htmldata = Place.getInstance().getPrince(5);
					}else if (s.equalsIgnoreCase("request Place7")) {//龍騎士排行
						htmldata = Place.getInstance().getPrince(6);
					}else if (s.equalsIgnoreCase("request Place8")) {//幻術士排行
						htmldata = Place.getInstance().getPrince(7);
						/*}else if (s.equalsIgnoreCase("request Place9")) {//紅包卡排行
						htmldata = NewYear.getInstance().getAllValue();
						if(htmldata == null){
							pc.sendPackets(new S_ServerMessage(166,"排名重整中，請稍後再試。"));
							return;
						}*/
					}

					//npc.setSkillEffect(123456, 15*1000);
					//npc.broadcastPacket(new S_NpcChatPacket(npc, pc.getName()+"正在觀察排行榜。", 0));
					htmlid = "place1";
				}else {pc.sendPackets(new S_ServerMessage(166,"需要1萬金幣"));
				pc.setSkillEffect(123457,1500);}
				//TODO 玩家排名

				//npc.broadcastPacket(new S_NpcChatPacket(npc,time +"秒後才能查看。", 0));}
			}else if (npcid == 710013) {// 媽祖的祝福
				final int Mon = GetNowTime.GetNowMonth();
				final int Day = GetNowTime.GetNowDay();
				if (s.equalsIgnoreCase("status")) {
					if(pc.getQuest().get_step(L1Quest.QUEST_opqlo_MON) == Mon
							&& pc.getQuest().get_step(L1Quest.QUEST_opqlo_DAY) == Day){
						pc.sendPackets(new S_SystemMessage("今天已經領取過狀態了，請明天再來。"));
						return;
					}
					if (pc.getInventory().consumeItem(L1ItemId.ADENA, 10000000)) {
						pc.getQuest().set_step(L1Quest.QUEST_opqlo_MON, Mon);
						pc.getQuest().set_step(L1Quest.QUEST_opqlo_DAY, Day);
						final int time = 3600000;
						pc.setSkillEffect(EXP_UP, time);
						pc.getExpRate=2.5;
						L1BuffUtil.supperSpeed(pc, time , (byte)2);
						htmlid = "";
						pc.sendPackets(new S_SystemMessage("經驗倍率上升"+pc.getExpRate+"倍，持續60分鐘。"));
					}else {
						pc.sendPackets(new S_SystemMessage("需要1000萬金幣。"));
					}
				}else if(s.equalsIgnoreCase("status2")){
					if (pc.getInventory().consumeItem(L1ItemId.ADENA, 100000)) {
						L1SkillUse use = new L1SkillUse();
						final int id = pc.getId();
						final int x = pc.getX();
						final int y = pc.getY();
						final int type = L1SkillUse.TYPE_GMBUFF;
						if(pc.getWeapon() !=null){
							final int weapontype = pc.getWeapon().getItem().getType1();
							if(weapontype == 20 || weapontype == 62){
								use.handleCommands(pc, 149, id, x, y, null, 1800, type);//風之神射
							}else if(weapontype!=0){
								use.handleCommands(pc, 148, id, x, y, null, 1800, type);//火焰武器
							}
						}
						for(final int i : 馬祖祝福){
							use.handleCommands(pc, i, id, x, y, null, 1800, type);
						}
						pc.setCurrentHp(pc.getMaxHp());
						pc.setCurrentMp(pc.getMaxMp());
						use = null;
					}else {
						pc.sendPackets(new S_SystemMessage("需要10萬金幣。"));
					}
				}/*else {
					L1ItemInstance item = pc.getInventory().findItemId(255550);
					if(item == null || item.getCount() < 50){
						pc.sendPackets(new S_SystemMessage("需要50張紅包卡。"));
						return;
					}
					int polyid = 0;
					if (s.equalsIgnoreCase("poly1")){
						polyid = 365;
					}else if (s.equalsIgnoreCase("poly2")){
						polyid = 371;
					}else if (s.equalsIgnoreCase("poly3")){
						polyid = 367;
					}else if (s.equalsIgnoreCase("poly4")){
						polyid = 369;
					}
					if(polyid ==0){} else if(pc.getInventory().removeItemByItemId(255550 , 50) ==50){
					L1PolyMorph.doPoly(pc, polyid, 7200,L1PolyMorph.MORPH_BY_GM);
					pc.sendPackets(new S_SystemMessage("新年快樂!!!!"));
					}else{
						pc.sendPackets(new S_SystemMessage("需要50張紅包卡。"));
					}
				}*/
				htmlid = "";

			}else if (npcid == 71038) {// 長老 ノナメ
				// 「手紙を受け取る」
				if (s.equalsIgnoreCase("A")) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					final L1ItemInstance item = pc.getInventory().storeItem(41060, 1); // ノナメの推薦書
					final String npcName = npc.getNpcTemplate().get_name();
					final String itemName = item.getItem().getName();
					pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
					htmlid = "orcfnoname9";
				}
				// 「調査をやめます」
				else if (s.equalsIgnoreCase("Z")) {
					if (pc.getInventory().consumeItem(41060, 1)) {
						htmlid = "orcfnoname11";
					}
				}
			}
			// ドゥダ-マラ ブウ
			else if (npcid == 71039) {
				// 「わかりました、その場所に送ってください」
				if (s.equalsIgnoreCase("teleportURL")) {
					htmlid = "orcfbuwoo2";
				}
			}
			// 調査団長 アトゥバ ノア
			else if (npcid == 71040) {
				// 「やってみます」
				if (s.equalsIgnoreCase("A")) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					final L1ItemInstance item = pc.getInventory().storeItem(41065, 1); // 調査団の証書
					final String npcName = npc.getNpcTemplate().get_name();
					final String itemName = item.getItem().getName();
					pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
					htmlid = "orcfnoa4";
				}
				// 「調査をやめます」
				else if (s.equalsIgnoreCase("Z")) {
					if (pc.getInventory().consumeItem(41065, 1)) {
						htmlid = "orcfnoa7";
					}
				}
			}
			// ネルガ フウモ
			else if (npcid == 71041) {
				// 「調査をします」
				if (s.equalsIgnoreCase("A")) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					final L1ItemInstance item = pc.getInventory().storeItem(41064, 1); // 調査団の証書
					final String npcName = npc.getNpcTemplate().get_name();
					final String itemName = item.getItem().getName();
					pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
					htmlid = "orcfhuwoomo4";
				}
				// 「調査をやめます」
				else if (s.equalsIgnoreCase("Z")) {
					if (pc.getInventory().consumeItem(41064, 1)) {
						htmlid = "orcfhuwoomo6";
					}
				}
			}
			// ネルガ バクモ
			else if (npcid == 71042) {
				// 「調査をします」
				if (s.equalsIgnoreCase("A")) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					final L1ItemInstance item = pc.getInventory().storeItem(41062, 1); // 調査団の証書
					final String npcName = npc.getNpcTemplate().get_name();
					final String itemName = item.getItem().getName();
					pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
					htmlid = "orcfbakumo4";
				}
				// 「調査をやめます」
				else if (s.equalsIgnoreCase("Z")) {
					if (pc.getInventory().consumeItem(41062, 1)) {
						htmlid = "orcfbakumo6";
					}
				}
			}
			// ドゥダ-マラ ブカ
			else if (npcid == 71043) {
				// 「調査をします」
				if (s.equalsIgnoreCase("A")) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					final L1ItemInstance item = pc.getInventory().storeItem(41063, 1); // 調査団の証書
					final String npcName = npc.getNpcTemplate().get_name();
					final String itemName = item.getItem().getName();
					pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
					htmlid = "orcfbuka4";
				}
				// 「調査をやめます」
				else if (s.equalsIgnoreCase("Z")) {
					if (pc.getInventory().consumeItem(41063, 1)) {
						htmlid = "orcfbuka6";
					}
				}
			}
			// ドゥダ-マラ カメ
			else if (npcid == 71044) {
				// 「調査をします」
				if (s.equalsIgnoreCase("A")) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					final L1ItemInstance item = pc.getInventory().storeItem(41061, 1); // 調査団の証書
					final String npcName = npc.getNpcTemplate().get_name();
					final String itemName = item.getItem().getName();
					pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
					htmlid = "orcfkame4";
				}
				// 「調査をやめます」
				else if (s.equalsIgnoreCase("Z")) {
					if (pc.getInventory().consumeItem(41061, 1)) {
						htmlid = "orcfkame6";
					}
				}
			}
			// ポワール
			else if (npcid == 71078) {
				// 「入ってみる」
				if (s.equalsIgnoreCase("teleportURL")) {
					htmlid = "usender2";
				}
			}
			// 治安団長アミス 海音內城
			else if (npcid == 71080) {
				// 「私がお手伝いしましょう」
				if (s.equalsIgnoreCase("teleportURL")) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					if(pc.getClan().getCastleId() ==0){
						pc.sendPackets(new S_SystemMessage("\\aH你的血盟沒有擁有城堡。"));
						htmlid = "";
						return;
					}
					final int CastleId = L1CastleLocation.getCastleIdByArea(npc.getLocation());
					if(pc.getClan().getCastleId() != CastleId){
						pc.sendPackets(new S_SystemMessage("\\aH這座城堡不屬於你的血盟。"));
						htmlid = "";
						return;
					}
					//htmlid = "amisoo2";
					L1Teleport.teleport(pc, 32745, 32861,(short)252,5, true);
				}
			}else if(npcid == 50023){
				if (s.equalsIgnoreCase("teleport kentcd")) {
					final L1NpcInstance npc = (L1NpcInstance) obj;
					if(pc.getClan().getCastleId() ==0){
						pc.sendPackets(new S_SystemMessage("\\aH你的血盟沒有擁有城堡。"));
						htmlid = "";
						return;
					}
					final int CastleId = L1CastleLocation.getCastleIdByArea(npc.getLocation());
					if(pc.getClan().getCastleId() != CastleId){
						pc.sendPackets(new S_SystemMessage("\\aH這座城堡不屬於你的血盟。"));
						htmlid = "";
						return;
					}
					//htmlid = "amisoo2";
					L1Teleport.teleport(pc, 32721, 33087,(short)240,5, true);
				}

				// 空間の歪み
			}else if (npcid == 80048) {
				// 「やめる」
				if (s.equalsIgnoreCase("2")) {
					htmlid = ""; // ウィンドウを消す
				}
			}
			// 揺らぐ者
			else if (npcid == 80049) {
				// 「バルログの意志を迎え入れる」
				if (s.equalsIgnoreCase("1")) {
					if (pc.getKarma() <= -10000000) {
						pc.setKarma(1000000);
						// バルログの笑い声が脳裏を強打します。
						pc.sendPackets(new S_ServerMessage(1078));
						htmlid = "betray13";
					}
				}
			}
			// ヤヒの執政官
			else if (npcid == 80050) {
				// 「私の霊魂はヤヒ様へ…」
				if (s.equalsIgnoreCase("1")) {
					htmlid = "meet105";
				}
				// 「私の霊魂をかけてヤヒ様に忠誠を誓います…」
				else if (s.equalsIgnoreCase("2")) {
					if (pc.getInventory().checkItem(40718)) { // ブラッドクリスタルの欠片
						htmlid = "meet106";
					} else {
						htmlid = "meet110";
					}
				}
				// 「ブラッドクリスタルの欠片を1個捧げます」
				else if (s.equalsIgnoreCase("a")) {
					if (pc.getInventory().consumeItem(40718, 1)) {
						pc.addKarma((int) (-100 * Config.RATE_KARMA));
						// ヤヒの姿がだんだん近くに感じられます。
						pc.sendPackets(new S_ServerMessage(1079));
						htmlid = "meet107";
					} else {
						htmlid = "meet104";
					}
				}
				// 「ブラッドクリスタルの欠片を10個捧げます」
				else if (s.equalsIgnoreCase("b")) {
					if (pc.getInventory().consumeItem(40718, 10)) {
						pc.addKarma((int) (-1000 * Config.RATE_KARMA));
						// ヤヒの姿がだんだん近くに感じられます。
						pc.sendPackets(new S_ServerMessage(1079));
						htmlid = "meet108";
					} else {
						htmlid = "meet104";
					}
				}
				// 「ブラッドクリスタルの欠片を100個捧げます」
				else if (s.equalsIgnoreCase("c")) {
					if (pc.getInventory().consumeItem(40718, 100)) {
						pc.addKarma((int) (-10000 * Config.RATE_KARMA));
						// ヤヒの姿がだんだん近くに感じられます。
						pc.sendPackets(new S_ServerMessage(1079));
						htmlid = "meet109";
					} else {
						htmlid = "meet104";
					}
				}
				// 「ヤヒ様に会わせてください」
				else if (s.equalsIgnoreCase("d")) {
					if (pc.getInventory().checkItem(40615) // 影の神殿2階の鍵
							|| pc.getInventory().checkItem(40616)) { // 影の神殿3階の鍵
						htmlid = "";
					} else {
						L1Teleport.teleport(pc, 32683, 32895, (short) 608, 5, true);
					}
				}
			}
			// ヤヒの軍師
			else if (npcid == 80052) {
				// 私に力をくださいますよう・・・
				if (s.equalsIgnoreCase("a")) {
					if (pc.hasSkillEffect(STATUS_CURSE_YAHEE)) {
						pc.sendPackets(new S_ServerMessage(79)); // \f1何も起きませんでした。
					} else {
						pc.setSkillEffect(STATUS_CURSE_BARLOG, 1020 * 1000);
						pc.sendPackets(new S_SkillIconBlessOfEva(pc.getId(), 1020));
						pc.sendPacketsX8(new S_SkillSound(pc.getId(), 750));
						pc.sendPackets(new S_ServerMessage(1127));
					}
				}
			}
			// ヤヒの鍛冶屋
			else if (npcid == 80053) {
				// 「材料すべてを用意できました」
				if (s.equalsIgnoreCase("a")) {
					// バルログのツーハンド ソード / ヤヒの鍛冶屋
					int aliceMaterialId = 0;
					int karmaLevel = 0;
					int[] material = null;
					int[] count = null;
					int createItem = 0;
					String successHtmlId = null;
					String htmlId = null;

					final int[] aliceMaterialIdList = { 40991, 196, 197, 198, 199, 200,
							201, 202 };
					final int[] karmaLevelList = { -1, -2, -3, -4, -5, -6, -7, -8 };
					final int[][] materialsList = { {40995, 40718, 40991},
							{40997, 40718, 196}, {40990, 40718, 197},
							{40994, 40718, 198}, {40993, 40718, 199},
							{40998, 40718, 200}, {40996, 40718, 201},
							{40992, 40718, 202} };
					final int[][] countList = { {100, 100, 1}, {100, 100, 1},
							{100, 100, 1}, {50, 100, 1},
							{50, 100, 1}, {50, 100, 1},
							{10, 100, 1}, {10, 100, 1} };
					final int[] createItemList = { 196, 197, 198, 199, 200, 201, 202,
							203 };
					final String[] successHtmlIdList = { "alice_1", "alice_2", "alice_3",
							"alice_4", "alice_5", "alice_6", "alice_7", "alice_8" };
					final String[] htmlIdList = { "aliceyet", "alice_1", "alice_2",
							"alice_3", "alice_4", "alice_5", "alice_5" , "alice_7"};

					for (int i = 0; i < aliceMaterialIdList.length; i++) {
						if (pc.getInventory().checkItem(aliceMaterialIdList[i])) {
							aliceMaterialId = aliceMaterialIdList[i];
							karmaLevel = karmaLevelList[i];
							material = materialsList[i];
							count = countList[i];
							createItem = createItemList[i];
							successHtmlId = successHtmlIdList[i];
							htmlId = htmlIdList[i];
							break;
						}
					}

					if (aliceMaterialId == 0) {
						htmlid = "alice_no";
					} else if (aliceMaterialId == 203) {
						htmlid = "alice_8";
					} else {
						if (pc.getKarmaLevel() <= karmaLevel) {
							materials = material;
							counts = count;
							createitem = new int[] { createItem };
							createcount = new int[] { 1 };
							success_htmlid = successHtmlId;
							failure_htmlid = "alice_no";
						} else {
							htmlid = htmlId;
						}
					}
				}
			}
			// ヤヒの補佐官
			else if (npcid == 80055) {
				final L1NpcInstance npc = (L1NpcInstance) obj;
				htmlid = this.getYaheeAmulet(pc, npc, s);
			}
			// 業の管理者
			else if (npcid == 80056) {
				final L1NpcInstance npc = (L1NpcInstance) obj;
				if (pc.getKarma() <= -10000000) {
					this.getBloodCrystalByKarma(pc, npc, s);
				}
				htmlid = "";
			}
			// 次元の扉(バルログの部屋)
			else if (npcid == 80063) {
				// 「中に入る」
				if (s.equalsIgnoreCase("a")) {
					if (pc.getInventory().checkItem(40921)) { // 元素の支配者
						L1Teleport.teleport(pc, 32674, 32832, (short) 603, 2, true);
					} else {
						htmlid = "gpass02";
					}
				}
			}
			// バルログの執政官
			else if (npcid == 80064) {
				// 「私の永遠の主はバルログ様だけです…」
				if (s.equalsIgnoreCase("1")) {
					htmlid = "meet005";
				}
				// 「私の霊魂をかけてバルログ様に忠誠を誓います…」
				else if (s.equalsIgnoreCase("2")) {
					if (pc.getInventory().checkItem(40678)) { // ソウルクリスタルの欠片
						htmlid = "meet006";
					} else {
						htmlid = "meet010";
					}
				}
				// 「ソウルクリスタルの欠片を1個捧げます」
				else if (s.equalsIgnoreCase("a")) {
					if (pc.getInventory().consumeItem(40678, 1)) {
						pc.addKarma((int) (100 * Config.RATE_KARMA));
						// バルログの笑い声が脳裏を強打します。
						pc.sendPackets(new S_ServerMessage(1078));
						htmlid = "meet007";
					} else {
						htmlid = "meet004";
					}
				}
				// 「ソウルクリスタルの欠片を10個捧げます」
				else if (s.equalsIgnoreCase("b")) {
					if (pc.getInventory().consumeItem(40678, 10)) {
						pc.addKarma((int) (1000 * Config.RATE_KARMA));
						// バルログの笑い声が脳裏を強打します。
						pc.sendPackets(new S_ServerMessage(1078));
						htmlid = "meet008";
					} else {
						htmlid = "meet004";
					}
				}
				// 「ソウルクリスタルの欠片を100個捧げます」
				else if (s.equalsIgnoreCase("c")) {
					if (pc.getInventory().consumeItem(40678, 100)) {
						pc.addKarma((int) (10000 * Config.RATE_KARMA));
						// バルログの笑い声が脳裏を強打します。
						pc.sendPackets(new S_ServerMessage(1078));
						htmlid = "meet009";
					} else {
						htmlid = "meet004";
					}
				}
				// 「バルログ様に会わせてください」
				else if (s.equalsIgnoreCase("d")) {
					if (pc.getInventory().checkItem(40909) // 地の通行証
							|| pc.getInventory().checkItem(40910) // 水の通行証
							|| pc.getInventory().checkItem(40911) // 火の通行証
							|| pc.getInventory().checkItem(40912) // 風の通行証
							|| pc.getInventory().checkItem(40913) // 地の印章
							|| pc.getInventory().checkItem(40914) // 水の印章
							|| pc.getInventory().checkItem(40915) // 火の印章
							|| pc.getInventory().checkItem(40916) // 風の印章
							|| pc.getInventory().checkItem(40917) // 地の支配者
							|| pc.getInventory().checkItem(40918) // 水の支配者
							|| pc.getInventory().checkItem(40919) // 火の支配者
							|| pc.getInventory().checkItem(40920) // 風の支配者
							|| pc.getInventory().checkItem(40921)) { // 元素の支配者
						htmlid = "";
					} else {
						L1Teleport.teleport(pc, 32674, 32832, (short) 602, 2, true);
					}
				}
			}
			// 揺らめく者
			else if (npcid == 80066) {
				// 「カヘルの意志を受け入れる」
				if (s.equalsIgnoreCase("1")) {
					if (pc.getKarma() >= 10000000) {
						pc.setKarma(-1000000);
						// ヤヒの姿がだんだん近くに感じられます。
						pc.sendPackets(new S_ServerMessage(1079));
						htmlid = "betray03";
					}
				}
			}
			// バルログの補佐官
			else if (npcid == 80071) {
				final L1NpcInstance npc = (L1NpcInstance) obj;
				htmlid = this.getBarlogEarring(pc, npc, s);
			}
			// バルログの軍師
			else if (npcid == 80073) {
				// 私に力をくださいますよう・・・
				if (s.equalsIgnoreCase("a")) {
					if (pc.hasSkillEffect(STATUS_CURSE_BARLOG)) {
						pc.sendPackets(new S_ServerMessage(79)); // \f1何も起きませんでした。
					} else {
						pc.setSkillEffect(STATUS_CURSE_YAHEE, 1020 * 1000);
						pc.sendPackets(new S_SkillIconBlessOfEva(pc.getId(), 1020));
						pc.sendPacketsX8(new S_SkillSound(pc.getId(), 750));
						pc.sendPackets(new S_ServerMessage(1127));
					}
				}
			}
			// バルログの鍛冶屋
			else if (npcid == 80072) {
				String sEquals = null;
				int karmaLevel = 0;
				int[] material = null;
				int[] count = null;
				int createItem = 0;
				String failureHtmlId = null;
				String htmlId = null;

				final String[] sEqualsList = { "0", "1", "2", "3", "4", "5", "6", "7",
						"8", "a", "b", "c", "d", "e", "f", "g", "h" };
				final String[] htmlIdList = { "lsmitha", "lsmithb", "lsmithc", "lsmithd",
						"lsmithe", "", "lsmithf", "lsmithg", "lsmithh" };
				final int[] karmaLevelList = { 1, 2, 3, 4, 5, 6, 7, 8 };
				final int[][] materialsList = { {20158, 40669, 40678},
						{20144, 40672, 40678}, {20075, 40671, 40678},
						{20183, 40674, 40678}, {20190, 40674, 40678},
						{20078, 40674, 40678}, {20078, 40670, 40678},
						{40719, 40673, 40678} };
				final int[][] countList = { {1, 50, 100}, {1, 50, 100}, {1, 50, 100},
						{1, 20, 100}, {1, 40, 100}, {1, 5, 100}, {1, 1, 100},
						{1, 1, 100} };
				final int[] createItemList = { 20083, 20131, 20069, 20179 , 20209, 20290,
						20261, 20031 };
				final String[] failureHtmlIdList = { "lsmithaa", "lsmithbb", "lsmithcc",
						"lsmithdd", "lsmithee", "lsmithff", "lsmithgg",
				"lsmithhh" };

				for (int i = 0; i < sEqualsList.length; i++) {
					if (s.equalsIgnoreCase(sEqualsList[i])) {
						sEquals = sEqualsList[i];
						if (i <= 8) {
							htmlId = htmlIdList[i];
						} else if (i > 8) {
							karmaLevel = karmaLevelList[i - 9];
							material = materialsList[i - 9];
							count = countList[i - 9];
							createItem = createItemList[i - 9];
							failureHtmlId = failureHtmlIdList[i - 9];
						}
						break;
					}
				}
				if (s.equalsIgnoreCase(sEquals)) {
					if (karmaLevel != 0 && pc.getKarmaLevel() >= karmaLevel) {
						materials = material;
						counts = count;
						createitem = new int[] { createItem };
						createcount = new int[] { 1 };
						success_htmlid = "";
						failure_htmlid = failureHtmlId;
					} else {
						htmlid = htmlId;
					}
				}
			}
			// 業の管理者
			else if (npcid == 80074) {
				final L1NpcInstance npc = (L1NpcInstance) obj;
				if (pc.getKarma() >= 10000000) {
					this.getSoulCrystalByKarma(pc, npc, s);
				}
				htmlid = "";
			}
			// アルフォンス
			else if (npcid == 80057) {
				htmlid = this.karmaLevelToHtmlId(pc.getKarmaLevel());
				htmldata = new String[] { String.valueOf(pc.getKarmaPercent()) };
			}
			// 次元の扉(土風水火)
			else if (npcid == 80059
					|| npcid == 80060
					|| npcid == 80061
					|| npcid == 80062) {
				htmlid = this.talkToDimensionDoor(pc, (L1NpcInstance) obj, s);
			}
			// ジャック オ ランタン
			else if (npcid == 81124) {
				if (s.equalsIgnoreCase("1")) {
					this.poly(client, 4002);
					htmlid = ""; // ウィンドウを消す
				} else if (s.equalsIgnoreCase("2")) {
					this.poly(client, 4004);
					htmlid = ""; // ウィンドウを消す
				} else if (s.equalsIgnoreCase("3")) {
					this.poly(client, 4950);
					htmlid = ""; // ウィンドウを消す
				}
			}

			// クエスト関連
			// 一般クエスト / ライラ
			else if (s.equalsIgnoreCase("contract1")) {
				pc.getQuest().set_step(L1Quest.QUEST_LYRA, 1);
				htmlid = "lyraev2";
			} else if (s.equalsIgnoreCase("contract1yes") || // ライラ Yes
					s.equalsIgnoreCase("contract1no")) { // ライラ No

				if (s.equalsIgnoreCase("contract1yes")) {
					htmlid = "lyraev2";//TODO 修正對話流程不正確
				} else if (s.equalsIgnoreCase("contract1no")) {
					pc.getQuest().set_step(L1Quest.QUEST_LYRA, 0);
					htmlid = "lyraev5";//TODO 修正對話流程不正確
				}
				int totem = 0;
				if (pc.getInventory().checkItem(40131)) {//TODO 甘地圖騰
					totem++;
				}
				if (pc.getInventory().checkItem(40132)) {//TODO 那魯加圖騰
					totem++;
				}
				if (pc.getInventory().checkItem(40133)) {//TODO 都達瑪拉圖騰
					totem++;
				}
				if (pc.getInventory().checkItem(40134)) {//TODO 羅孚圖騰
					totem++;
				}
				if (pc.getInventory().checkItem(40135)) {//TODO 阿吐巴圖騰
					totem++;
				}
				if (totem != 0) {
					materials = new int[totem];
					counts = new int[totem];
					createitem = new int[totem];
					createcount = new int[totem];

					totem = 0;
					if (pc.getInventory().checkItem(40131)) {
						final L1ItemInstance l1iteminstance = pc.getInventory().findItemId(40131);
						final int i1 = (int) l1iteminstance.getCount();
						materials[totem] = 40131;
						counts[totem] = i1;
						createitem[totem] = L1ItemId.ADENA;
						createcount[totem] = i1 * 50;
						totem++;
					}
					if (pc.getInventory().checkItem(40132)) {
						final L1ItemInstance l1iteminstance = pc.getInventory().findItemId(40132);
						final int i1 = (int) l1iteminstance.getCount();
						materials[totem] = 40132;
						counts[totem] = i1;
						createitem[totem] = L1ItemId.ADENA;
						createcount[totem] = i1 * 100;
						totem++;
					}
					if (pc.getInventory().checkItem(40133)) {
						final L1ItemInstance l1iteminstance = pc.getInventory().findItemId(40133);
						final int i1 = (int) l1iteminstance.getCount();
						materials[totem] = 40133;
						counts[totem] = i1;
						createitem[totem] = L1ItemId.ADENA;
						createcount[totem] = i1 * 50;
						totem++;
					}
					if (pc.getInventory().checkItem(40134)) {
						final L1ItemInstance l1iteminstance = pc.getInventory().findItemId(40134);
						final int i1 = (int) l1iteminstance.getCount();
						materials[totem] = 40134;
						counts[totem] = i1;
						createitem[totem] = L1ItemId.ADENA;
						createcount[totem] = i1 * 30;
						totem++;
					}
					if (pc.getInventory().checkItem(40135)) {
						final L1ItemInstance l1iteminstance = pc.getInventory().findItemId(40135);
						final int i1 = (int) l1iteminstance.getCount();
						materials[totem] = 40135;
						counts[totem] = i1;
						createitem[totem] = L1ItemId.ADENA;
						createcount[totem] = i1 * 200;
						totem++;
					}
				}
			}
			// 最近の物価について
			// パンドラ、コルド、バルシム、メリン、グレン
			else if (s.equalsIgnoreCase("pandora6") || s.equalsIgnoreCase("cold6")
					|| s.equalsIgnoreCase("balsim3")
					|| s.equalsIgnoreCase("mellin3") || s.equalsIgnoreCase("glen3")) {
				htmlid = s;
				final int taxRatesCastle = L1CastleLocation
						.getCastleTaxRateByNpcId(npcid);
				htmldata = new String[] { String.valueOf(taxRatesCastle) };
			}
			// タウンマスター（この村の住民に登録する）
			else if (s.equalsIgnoreCase("set")) {
				if (obj instanceof L1NpcInstance) {
					final int town_id = L1TownLocation.getTownIdByNpcid(npcid);

					if (town_id >= 1 && town_id <= 10) {
						if (pc.getHomeTownId() == -1) {
							// \f1新しく住民登録を行なうには時間がかかります。時間を置いてからまた登録してください。
							pc.sendPackets(new S_ServerMessage(759));
							htmlid = "";
						} else if (pc.getHomeTownId() > 0) {
							// 既に登録してる
							if (pc.getHomeTownId() != town_id) {
								final L1Town town = TownTable.getInstance().getTownTable(
										pc.getHomeTownId());
								if (town != null) {
									// 現在、あなたが住民登録している場所は%0です。
									pc.sendPackets(new S_ServerMessage(758, town
											.get_name()));
								}
								htmlid = "";
							} else {
								// ありえない？
								htmlid = "";
							}
						} else if (pc.getHomeTownId() == 0) {
							// 登録
							if (pc.getLevel() < 10) {
								// \f1住民登録ができるのはレベル10以上のキャラクターです。
								pc.sendPackets(new S_ServerMessage(757));
								htmlid = "";
							} else {
								final int level = pc.getLevel();
								final int cost = level * level * 10;
								if (pc.getInventory().consumeItem(L1ItemId.ADENA,
										cost)) {
									pc.setHomeTownId(town_id);
									pc.setContribution(0); // 念のため
									pc.save();
								} else {
									// アデナが不足しています。
									pc.sendPackets(new S_ServerMessage(337, "$4"));
								}
								htmlid = "";
							}
						}
					}
				}
			}
			// タウンマスター（住民登録を取り消す）
			else if (s.equalsIgnoreCase("clear")) {
				if (obj instanceof L1NpcInstance) {
					final int town_id = L1TownLocation.getTownIdByNpcid(npcid);
					if (town_id > 0) {
						if (pc.getHomeTownId() > 0) {
							if (pc.getHomeTownId() == town_id) {
								pc.setHomeTownId(-1);
								pc.setContribution(0); // 貢献度クリア
								pc.save();
							} else {
								// \f1あなたは他の村の住民です。
								pc.sendPackets(new S_ServerMessage(756));
							}
						}
						htmlid = "";
					}
				}
			}
			// タウンマスター（村の村長が誰かを聞く）
			else if (s.equalsIgnoreCase("ask")) {
				if (obj instanceof L1NpcInstance) {
					final int town_id = L1TownLocation.getTownIdByNpcid(npcid);

					if (town_id >= 1 && town_id <= 10) {
						final L1Town town = TownTable.getInstance().getTownTable(town_id);
						final String leader = town.get_leader_name();
						if (leader != null && leader.length() != 0) {
							htmlid = "owner";
							htmldata = new String[] { leader };
						} else {
							htmlid = "noowner";
						}
					}
				}
			}
			// タウンアドバイザー
			else if (npcid == 70534
					|| npcid == 70556
					|| npcid == 70572
					|| npcid == 70631
					|| npcid == 70663
					|| npcid == 70761
					|| npcid == 70788
					|| npcid == 70806
					|| npcid == 70830
					|| npcid == 70876) {
				// タウンアドバイザー（収入に関する報告）
				if (s.equalsIgnoreCase("r")) {

				}
				// タウンアドバイザー（税率変更）
				else if (s.equalsIgnoreCase("t")) {

				}
				// タウンアドバイザー（報酬をもらう）
				else if (s.equalsIgnoreCase("c")) {

				}
			}
			// ドロモンド
			else if (npcid == 70997) {
				// ありがとう、旅立ちます
				if (s.equalsIgnoreCase("0")) {
					final int[] item_ids = { 41146, 4, 20322, 173, 40743, };
					final int[] item_amounts = { 1, 1, 1, 1, 500, };
					for (int i = 0; i < item_ids.length; i++) {
						final L1ItemInstance item = pc.getInventory().storeItem(
								item_ids[i], item_amounts[i]);
						pc.sendPackets(new S_ServerMessage(143,
								((L1NpcInstance) obj).getNpcTemplate().get_name(),
								item.getLogName()));
					}
					pc.getQuest().set_step(L1Quest.QUEST_DOROMOND, 1);
					htmlid = "jpe0015";
				}
			}
			// アレックス(歌う島)
			else if (npcid == 70999) {
				// ドロモンドの紹介状を渡す
				if (s.equalsIgnoreCase("1")) {
					if (pc.getInventory().consumeItem(41146, 1)) {
						final int[] item_ids = { 23, 20219, 20193, };
						final int[] item_amounts = { 1, 1, 1, };
						for (int i = 0; i < item_ids.length; i++) {
							final L1ItemInstance item = pc.getInventory().storeItem(
									item_ids[i], item_amounts[i]);
							pc.sendPackets(new S_ServerMessage(143,
									((L1NpcInstance) obj).getNpcTemplate()
									.get_name(), item.getLogName()));
						}
						pc.getQuest().set_step(L1Quest.QUEST_DOROMOND, 2);
						htmlid = "";
					}
				} else if (s.equalsIgnoreCase("2")) {
					final int[] item_ids = { 41227 }; // アレックスの紹介状
					final int[] item_amounts = { 1 };
					for (int i = 0; i < item_ids.length; i++) {
						final L1ItemInstance item = pc.getInventory().storeItem(
								item_ids[i], item_amounts[i]);
						pc.sendPackets(new S_ServerMessage(143,
								((L1NpcInstance) obj).getNpcTemplate().get_name(),
								item.getLogName()));
					}
					pc.getQuest().set_step(L1Quest.QUEST_AREX, L1Quest.QUEST_END);
					htmlid = "";
				}
			}
			// ポピレア(歌う島)
			else if (npcid == 71005) {
				// アイテムを受け取る
				if (s.equalsIgnoreCase("0")) {
					if (!pc.getInventory().checkItem(41209)) {
						final int[] item_ids = { 41209, };
						final int[] item_amounts = { 1, };
						for (int i = 0; i < item_ids.length; i++) {
							final L1ItemInstance item = pc.getInventory().storeItem(
									item_ids[i], item_amounts[i]);
							pc.sendPackets(new S_ServerMessage(143,
									((L1NpcInstance) obj).getNpcTemplate()
									.get_name(), item.getItem().getName()));
						}
					}
					htmlid = ""; // ウィンドウを消す
				}
				// アイテムを受け取る
				else if (s.equalsIgnoreCase("1")) {
					if (pc.getInventory().consumeItem(41213, 1)) {
						final int[] item_ids = { 40029, };
						final int[] item_amounts = { 20, };
						for (int i = 0; i < item_ids.length; i++) {
							final L1ItemInstance item = pc.getInventory().storeItem(
									item_ids[i], item_amounts[i]);
							pc.sendPackets(new S_ServerMessage(143,
									((L1NpcInstance) obj).getNpcTemplate()
									.get_name(), item.getItem().getName()
									+ " (" + item_amounts[i] + ")"));
						}
						htmlid = ""; // ウィンドウを消す
					}
				}
			}
			// ティミー(歌う島)
			else if (npcid == 71006) {
				if (s.equalsIgnoreCase("0")) {
					if (pc.getLevel() > 25) {
						htmlid = "jpe0057";
					} else if (pc.getInventory().checkItem(41213)) { // ティミーのバスケット
						htmlid = "jpe0056";
					} else if (pc.getInventory().checkItem(41210)
							|| pc.getInventory().checkItem(41211)) { // 研磨材、ハーブ
						htmlid = "jpe0055";
					} else if (pc.getInventory().checkItem(41209)) { // ポピリアの依頼書
						htmlid = "jpe0054";
					} else if (pc.getInventory().checkItem(41212)) { // 特製キャンディー
						htmlid = "jpe0056";
						materials = new int[] { 41212 }; // 特製キャンディー
						counts = new int[] { 1 };
						createitem = new int[] { 41213 }; // ティミーのバスケット
						createcount = new int[] { 1 };
					} else {
						htmlid = "jpe0057";
					}
				}
			}
			// 治療師（歌う島の中：ＨＰのみ回復）
			else if (npcid == 70512) {
				// 治療を受ける("fullheal"でリクエストが来ることはあるのか？)
				if (s.equalsIgnoreCase("0") || s.equalsIgnoreCase("fullheal")) {
					//TODO 血魔補滿
					pc.setCurrentHp(pc.getMaxHp());
					pc.setCurrentMp(pc.getMaxMp());
					pc.sendPackets(new S_ServerMessage(77));
					pc.sendPackets(new S_SkillSound(pc.getId(), 830));
					pc.sendPackets(new S_HPUpdate(pc.getCurrentHp(), pc.getMaxHp()));
					pc.sendPackets(new S_MPUpdate(pc.getCurrentMp(), pc.getMaxMp()));
					//TODO 血魔補滿
				}
			}
			// 治療師（訓練場：HPMP回復）
			else if (npcid == 71037) {
				if (s.equalsIgnoreCase("0")) {
					pc.setCurrentHp(pc.getMaxHp());
					pc.setCurrentMp(pc.getMaxMp());
					pc.sendPackets(new S_ServerMessage(77));
					pc.sendPackets(new S_SkillSound(pc.getId(), 830));
					pc.sendPackets(new S_HPUpdate(pc.getCurrentHp(),pc.getMaxHp()));
					pc.sendPackets(new S_MPUpdate(pc.getCurrentMp(), pc.getMaxMp()));
				}
			}
			// 治療師（西部）
			else if (npcid == 71030) {
				if (s.equalsIgnoreCase("fullheal")) {
					if (pc.getInventory().checkItem(L1ItemId.ADENA, 5)) { // check
						pc.getInventory().consumeItem(L1ItemId.ADENA, 5); // del
						pc.setCurrentHp(pc.getMaxHp());
						pc.setCurrentMp(pc.getMaxMp());
						pc.sendPackets(new S_ServerMessage(77));
						pc.sendPackets(new S_SkillSound(pc.getId(), 830));
						pc.sendPackets(new S_HPUpdate(pc.getCurrentHp(), pc.getMaxHp()));
						pc.sendPackets(new S_MPUpdate(pc.getCurrentMp(), pc.getMaxMp()));
						if (pc.isInParty()) { // 中
							pc.getParty().updateMiniHP(pc);
						}
					} else {
						pc.sendPackets(new S_ServerMessage(337, "$4")); // 不足。
					}
				}
			}
			// キャンセレーション師
			else if (npcid == 71002) {
				// キャンセレーション魔法をかけてもらう
				if (s.equalsIgnoreCase("0")) {
					if (pc.getLevel() <= 13) {
						new L1SkillUse().handleCommands(pc, L1SkillId.CANCELLATION, pc.getId(), pc.getX(), pc.getY(), null, 0,L1SkillUse.TYPE_NPCBUFF, (L1NpcInstance) obj);
						htmlid = ""; // ウィンドウを消す
					}
				}
			}
			// ケスキン(歌う島)
			else if (npcid == 71025) {
				if (s.equalsIgnoreCase("0")) {
					final int[] item_ids = { 41225, };
					final int[] item_amounts = { 1, };
					L1ItemInstance item = null;
					for (int i = 0; i < item_ids.length; i++) {
						item = pc.getInventory().storeItem(item_ids[i], item_amounts[i]);
						pc.sendPackets(new S_ServerMessage(143,
								((L1NpcInstance) obj).getNpcTemplate().get_name(),item.getItem().getName()));
					}
					htmlid = "jpe0083";
				}
			}
			// ルケイン(海賊島)
			else if (npcid == 71055) {
				// アイテムを受け取る
				if (s.equalsIgnoreCase("0")) {
					final L1ItemInstance item = pc.getInventory().storeItem(40701, 1); // 小さな宝の地図
					pc.sendPackets(new S_ServerMessage(143,
							((L1NpcInstance) obj).getNpcTemplate().get_name(),
							item.getItem().getName()));
					pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 1);
					htmlid = "lukein8";
				} else if (s.equalsIgnoreCase("2")) {
					htmlid = "lukein12";
					pc.getQuest().set_step(L1Quest.QUEST_RESTA, 3);
				}
			}
			// 小さな箱-1番目
			else if (npcid == 71063) {
				if (s.equalsIgnoreCase("0")) {
					materials = new int[] { 40701 }; // 小さな宝の地図
					counts = new int[] { 1 };
					createitem = new int[] { 40702 }; // 小さな袋
					createcount = new int[] { 1 };
					htmlid = "maptbox1";
					pc.getQuest().set_end(L1Quest.QUEST_TBOX1);
					final int[] nextbox = { 1, 2, 3 };
					final int pid = Random.nextInt(nextbox.length);
					final int nb = nextbox[pid];
					if (nb == 1) { // b地点
						pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 2);
					} else if (nb == 2) { // c地点
						pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 3);
					} else if (nb == 3) { // d地点
						pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 4);
					}
				}
			}
			// 小さな箱-2番目
			else if (npcid == 71064
					|| npcid == 71065
					|| npcid == 71066) {
				if (s.equalsIgnoreCase("0")) {
					materials = new int[] { 40701 }; // 小さな宝の地図
					counts = new int[] { 1 };
					createitem = new int[] { 40702 }; // 小さな袋
					createcount = new int[] { 1 };
					htmlid = "maptbox1";
					pc.getQuest().set_end(L1Quest.QUEST_TBOX2);
					final int[] nextbox2 = { 1, 2, 3, 4, 5, 6 };
					final int pid = Random.nextInt(nextbox2.length);
					final int nb2 = nextbox2[pid];
					if (nb2 == 1) { // e地点
						pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 5);
					} else if (nb2 == 2) { // f地点
						pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 6);
					} else if (nb2 == 3) { // g地点
						pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 7);
					} else if (nb2 == 4) { // h地点
						pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 8);
					} else if (nb2 == 5) { // i地点
						pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 9);
					} else if (nb2 == 6) { // j地点
						pc.getQuest().set_step(L1Quest.QUEST_LUKEIN1, 10);
					}
				}
			}
			// シミズ(海賊島)
			else if (npcid == 71056) {
				// 息子を捜す
				if (s.equalsIgnoreCase("a")) {
					pc.getQuest().set_step(L1Quest.QUEST_SIMIZZ, 1);
					htmlid = "SIMIZZ7";
				} else if (s.equalsIgnoreCase("b")) {
					if (pc.getInventory().checkItem(40661)
							&& pc.getInventory().checkItem(40662)
							&& pc.getInventory().checkItem(40663)) {
						htmlid = "SIMIZZ8";
						pc.getQuest().set_step(L1Quest.QUEST_SIMIZZ, 2);
						materials = new int[] { 40661, 40662, 40663 };
						counts = new int[] { 1, 1, 1 };
						createitem = new int[] { 20044 };
						createcount = new int[] { 1 };
					} else {
						htmlid = "SIMIZZ9";
					}
				} else if (s.equalsIgnoreCase("d")) {
					htmlid = "SIMIZZ12";
					pc.getQuest().set_step(L1Quest.QUEST_SIMIZZ, L1Quest.QUEST_END);
				}
			}
			// ドイル(海賊島)
			else if (npcid == 71057) {
				// ラッシュについて聞く
				if (s.equalsIgnoreCase("3")) {
					htmlid = "doil4";
				} else if (s.equalsIgnoreCase("6")) {
					htmlid = "doil6";
				} else if (s.equalsIgnoreCase("1")) {
					if (pc.getInventory().checkItem(40714)) {
						htmlid = "doil8";
						materials = new int[] { 40714 };
						counts = new int[] { 1 };
						createitem = new int[] { 40647 };
						createcount = new int[] { 1 };
						pc.getQuest().set_step(L1Quest.QUEST_DOIL,
								L1Quest.QUEST_END);
					} else {
						htmlid = "doil7";
					}
				}
			}
			// ルディアン(海賊島)
			else if (npcid == 71059) {
				// ルディアンの頼みを受け入れる
				if (s.equalsIgnoreCase("A")) {
					htmlid = "rudian6";
					final L1ItemInstance item = pc.getInventory().storeItem(40700 , 1);
					pc.sendPackets(new S_ServerMessage(143,
							((L1NpcInstance) obj).getNpcTemplate().get_name(),
							item.getItem().getName()));
					pc.getQuest().set_step(L1Quest.QUEST_RUDIAN, 1);
				} else if (s.equalsIgnoreCase("B")) {
					if (pc.getInventory().checkItem(40710)) {
						htmlid = "rudian8";
						materials = new int[] { 40700, 40710 };
						counts = new int[] { 1, 1 };
						createitem = new int[] { 40647 };
						createcount = new int[] { 1 };
						pc.getQuest().set_step(L1Quest.QUEST_RUDIAN,
								L1Quest.QUEST_END);
					} else {
						htmlid = "rudian9";
					}
				}
			}
			// レスタ(海賊島)
			else if (npcid == 71060) {
				// 仲間たちについて
				if (s.equalsIgnoreCase("A")) {
					if (pc.getQuest().get_step(L1Quest.QUEST_RUDIAN) == L1Quest.QUEST_END) {
						htmlid = "resta6";
					} else {
						htmlid = "resta4";
					}
				} else if (s.equalsIgnoreCase("B")) {
					htmlid = "resta10";
					pc.getQuest().set_step(L1Quest.QUEST_RESTA, 2);
				}
			}
			// カドムス(海賊島)
			else if (npcid == 71061) {
				// 地図を組み合わせてください
				if (s.equalsIgnoreCase("A")) {
					if (pc.getInventory().checkItem(40647, 3)) {
						htmlid = "cadmus6";
						pc.getInventory().consumeItem(40647, 3);
						pc.getQuest().set_step(L1Quest.QUEST_CADMUS, 2);
					} else {
						htmlid = "cadmus5";
						pc.getQuest().set_step(L1Quest.QUEST_CADMUS, 1);
					}
				}
			}
			// カミーラ(海賊島)
			else if (npcid == 71036) {
				if (s.equalsIgnoreCase("a")) {
					htmlid = "kamyla7";
					pc.getQuest().set_step(L1Quest.QUEST_KAMYLA, 1);
				} else if (s.equalsIgnoreCase("c")) {
					htmlid = "kamyla10";
					pc.getInventory().consumeItem(40644, 1);
					pc.getQuest().set_step(L1Quest.QUEST_KAMYLA, 3);
				} else if (s.equalsIgnoreCase("e")) {
					htmlid = "kamyla13";
					pc.getInventory().consumeItem(40630, 1);
					pc.getQuest().set_step(L1Quest.QUEST_KAMYLA, 4);
				} else if (s.equalsIgnoreCase("i")) {
					htmlid = "kamyla25";
				} else if (s.equalsIgnoreCase("b")) { // カーミラ（フランコの迷宮）
					if (pc.getQuest().get_step(L1Quest.QUEST_KAMYLA) == 1) {
						L1Teleport.teleport(pc, 32679, 32742, (short) 482, 5, true);
					}
				} else if (s.equalsIgnoreCase("d")) { // カーミラ（ディエゴの閉ざされた牢）
					if (pc.getQuest().get_step(L1Quest.QUEST_KAMYLA) == 3) {
						L1Teleport.teleport(pc, 32736, 32800, (short) 483, 5, true);
					}
				} else if (s.equalsIgnoreCase("f")) { // カーミラ（ホセ地下牢）
					if (pc.getQuest().get_step(L1Quest.QUEST_KAMYLA) == 4) {
						L1Teleport.teleport(pc, 32746, 32807, (short) 484, 5, true);
					}
				}
			}
			// フランコ(海賊島)
			else if (npcid == 71089) {
				// カミーラにあなたの潔白を証明しましょう
				if (s.equalsIgnoreCase("a")) {
					htmlid = "francu10";
					final L1ItemInstance item = pc.getInventory().storeItem(40644, 1);
					pc.sendPackets(new S_ServerMessage(143,
							((L1NpcInstance) obj).getNpcTemplate().get_name(),
							item.getItem().getName()));
					pc.getQuest().set_step(L1Quest.QUEST_KAMYLA, 2);
				}
			}
			// 試練のクリスタル2(海賊島)
			else if (npcid == 71090) {
				// はい、武器とスクロールをください
				if (s.equalsIgnoreCase("a")) {
					htmlid = "";
					final int[] item_ids = { 246, 247, 248, 249, 40660 };
					final int[] item_amounts = { 1, 1, 1, 1, 5 };
					for (int i = 0; i < item_ids.length; i++) {
						final L1ItemInstance item = pc.getInventory().storeItem(
								item_ids[i], item_amounts[i]);
						pc.sendPackets(new S_ServerMessage(143,
								((L1NpcInstance) obj).getNpcTemplate().get_name(),
								item.getItem().getName()));
						pc.getQuest().set_step(L1Quest.QUEST_CRYSTAL, 1);
					}
				} else if (s.equalsIgnoreCase("b")) {
					if (pc.getInventory().checkEquipped(246)
							|| pc.getInventory().checkEquipped(247)
							|| pc.getInventory().checkEquipped(248)
							|| pc.getInventory().checkEquipped(249)) {
						htmlid = "jcrystal5";
					} else if (pc.getInventory().checkItem(40660)) {
						htmlid = "jcrystal4";
					} else {
						pc.getInventory().consumeItem(246, 1);
						pc.getInventory().consumeItem(247, 1);
						pc.getInventory().consumeItem(248, 1);
						pc.getInventory().consumeItem(249, 1);
						pc.getInventory().consumeItem(40620, 1);
						pc.getQuest().set_step(L1Quest.QUEST_CRYSTAL, 2);
						L1Teleport.teleport(pc, 32801, 32895, (short) 483, 4, true);
					}
				} else if (s.equalsIgnoreCase("c")) {
					if (pc.getInventory().checkEquipped(246)
							|| pc.getInventory().checkEquipped(247)
							|| pc.getInventory().checkEquipped(248)
							|| pc.getInventory().checkEquipped(249)) {
						htmlid = "jcrystal5";
					} else {
						pc.getInventory().checkItem(40660);
						final L1ItemInstance l1iteminstance = pc.getInventory()
								.findItemId(40660);
						final int sc = (int) l1iteminstance.getCount();
						if (sc > 0) {
							pc.getInventory().consumeItem(40660, sc);
						} else {
						}
						pc.getInventory().consumeItem(246, 1);
						pc.getInventory().consumeItem(247, 1);
						pc.getInventory().consumeItem(248, 1);
						pc.getInventory().consumeItem(249, 1);
						pc.getInventory().consumeItem(40620, 1);
						pc.getQuest().set_step(L1Quest.QUEST_CRYSTAL, 0);
						L1Teleport.teleport(pc, 32736, 32800, (short) 483, 4, true);
					}
				}
			}
			// 試練のクリスタル2(海賊島)
			else if (npcid == 71091) {
				// さらば！！
				if (s.equalsIgnoreCase("a")) {
					htmlid = "";
					pc.getInventory().consumeItem(40654, 1);
					pc.getQuest()
					.set_step(L1Quest.QUEST_CRYSTAL, L1Quest.QUEST_END);
					L1Teleport.teleport(pc, 32744, 32927, (short) 483, 4, true);
				}
			}
			// リザードマンの長老(海賊島)
			else if (npcid == 71074) {
				// その戦士は今どこらへんにいるんですか？
				if (s.equalsIgnoreCase("A")) {
					htmlid = "lelder5";
					pc.getQuest().set_step(L1Quest.QUEST_LIZARD, 1);
					// 宝を取り戻してきます
				} else if (s.equalsIgnoreCase("B")) {
					htmlid = "lelder10";
					pc.getInventory().consumeItem(40633, 1);
					pc.getQuest().set_step(L1Quest.QUEST_LIZARD, 3);
				} else if (s.equalsIgnoreCase("C")) {
					htmlid = "lelder13";
					if (pc.getQuest().get_step(L1Quest.QUEST_LIZARD) == L1Quest.QUEST_END) {
					}
					materials = new int[] { 40634 };
					counts = new int[] { 1 };
					createitem = new int[] { 20167 }; // リザードマングローブ
					createcount = new int[] { 1 };
					pc.getQuest().set_step(L1Quest.QUEST_LIZARD, L1Quest.QUEST_END);
				}
			}
			// 傭兵団長 ティオン
			else if (npcid == 71198) {
				if (s.equalsIgnoreCase("A")) {
					if (pc.getQuest().get_step(71198) != 0
							|| pc.getInventory().checkItem(21059, 1)) {
						return;
					}
					if (pc.getInventory().consumeItem(41339, 5)) { // 亡者のメモ
						final L1ItemInstance item = ItemTable.getInstance().createItem(
								41340); // 傭兵団長 ティオンの紹介状
						if (item != null) {
							if (pc.getInventory().checkAddItem(item, 1) == 0) {
								pc.getInventory().storeItem(item);
								pc.sendPackets(new S_ServerMessage(143,
										((L1NpcInstance) obj).getNpcTemplate()
										.get_name(), item.getItem()
										.getName())); // \f1%0が%1をくれました。
							}
						}
						pc.getQuest().set_step(71198, 1);
						htmlid = "tion4";
					} else {
						htmlid = "tion9";
					}
				} else if (s.equalsIgnoreCase("B")) {
					if (pc.getQuest().get_step(71198) != 1
							|| pc.getInventory().checkItem(21059, 1)) {
						return;
					}
					if (pc.getInventory().consumeItem(41341, 1)) { // ジェロンの教本
						pc.getQuest().set_step(71198, 2);
						htmlid = "tion5";
					} else {
						htmlid = "tion10";
					}
				} else if (s.equalsIgnoreCase("C")) {
					if (pc.getQuest().get_step(71198) != 2
							|| pc.getInventory().checkItem(21059, 1)) {
						return;
					}
					if (pc.getInventory().consumeItem(41343, 1)) { // パプリオンの血痕
						final L1ItemInstance item = ItemTable.getInstance().createItem(
								21057); // 訓練騎士のマント1
						if (item != null) {
							if (pc.getInventory().checkAddItem(item, 1) == 0) {
								pc.getInventory().storeItem(item);
								pc.sendPackets(new S_ServerMessage(143,
										((L1NpcInstance) obj).getNpcTemplate()
										.get_name(), item.getItem()
										.getName())); // \f1%0が%1をくれました。
							}
						}
						pc.getQuest().set_step(71198, 3);
						htmlid = "tion6";
					} else {
						htmlid = "tion12";
					}
				} else if (s.equalsIgnoreCase("D")) {
					if (pc.getQuest().get_step(71198) != 3
							|| pc.getInventory().checkItem(21059, 1)) {
						return;
					}
					if (pc.getInventory().consumeItem(41344, 1)) { // 水の精粋
						final L1ItemInstance item = ItemTable.getInstance().createItem(
								21058); // 訓練騎士のマント2
						if (item != null) {
							pc.getInventory().consumeItem(21057, 1); // 訓練騎士のマント1
							if (pc.getInventory().checkAddItem(item, 1) == 0) {
								pc.getInventory().storeItem(item);
								pc.sendPackets(new S_ServerMessage(143,
										((L1NpcInstance) obj).getNpcTemplate()
										.get_name(), item.getItem()
										.getName())); // \f1%0が%1をくれました。
							}
						}
						pc.getQuest().set_step(71198, 4);
						htmlid = "tion7";
					} else {
						htmlid = "tion13";
					}
				} else if (s.equalsIgnoreCase("E")) {
					if (pc.getQuest().get_step(71198) != 4
							|| pc.getInventory().checkItem(21059, 1)) {
						return;
					}
					if (pc.getInventory().consumeItem(41345, 1)) { // 酸性の乳液
						final L1ItemInstance item = ItemTable.getInstance().createItem(
								21059); // ポイズン サーペント クローク
						if (item != null) {
							pc.getInventory().consumeItem(21058, 1); // 訓練騎士のマント2
							if (pc.getInventory().checkAddItem(item, 1) == 0) {
								pc.getInventory().storeItem(item);
								pc.sendPackets(new S_ServerMessage(143,
										((L1NpcInstance) obj).getNpcTemplate()
										.get_name(), item.getItem()
										.getName())); // \f1%0が%1をくれました。
							}
						}
						pc.getQuest().set_step(71198, 0);
						pc.getQuest().set_step(71199, 0);
						htmlid = "tion8";
					} else {
						htmlid = "tion15";
					}
				}
			}
			// ジェロン
			else if (npcid == 71199) {
				if (s.equalsIgnoreCase("A")) {
					if (pc.getQuest().get_step(71199) != 0
							|| pc.getInventory().checkItem(21059, 1)) {
						return;
					}
					if (pc.getInventory().checkItem(41340, 1)) { // 傭兵団長 ティオンの紹介状
						pc.getQuest().set_step(71199, 1);
						htmlid = "jeron2";
					} else {
						htmlid = "jeron10";
					}
				} else if (s.equalsIgnoreCase("B")) {
					if (pc.getQuest().get_step(71199) != 1
							|| pc.getInventory().checkItem(21059, 1)) {
						return;
					}
					if (pc.getInventory().consumeItem(40308, 1000000)) {
						final L1ItemInstance item = ItemTable.getInstance().createItem(
								41341); // ジェロンの教本
						if (item != null) {
							if (pc.getInventory().checkAddItem(item, 1) == 0) {
								pc.getInventory().storeItem(item);
								pc.sendPackets(new S_ServerMessage(143,
										((L1NpcInstance) obj).getNpcTemplate()
										.get_name(), item.getItem()
										.getName())); // \f1%0が%1をくれました。
							}
						}
						pc.getInventory().consumeItem(41340, 1);
						pc.getQuest().set_step(71199, 255);
						htmlid = "jeron6";
					} else {
						htmlid = "jeron8";
					}
				} else if (s.equalsIgnoreCase("C")) {
					if (pc.getQuest().get_step(71199) != 1
							|| pc.getInventory().checkItem(21059, 1)) {
						return;
					}
					if (pc.getInventory().consumeItem(41342, 1)) { // メデューサの血
						final L1ItemInstance item = ItemTable.getInstance().createItem(
								41341); // ジェロンの教本
						if (item != null) {
							if (pc.getInventory().checkAddItem(item, 1) == 0) {
								pc.getInventory().storeItem(item);
								pc.sendPackets(new S_ServerMessage(143,
										((L1NpcInstance) obj).getNpcTemplate()
										.get_name(), item.getItem()
										.getName())); // \f1%0が%1をくれました。
							}
						}
						pc.getInventory().consumeItem(41340, 1);
						pc.getQuest().set_step(71199, 255);
						htmlid = "jeron5";
					} else {
						htmlid = "jeron9";
					}
				}
			}

			// 占星術師ケプリシャ
			else if (npcid == 80079) {
				// ケプリシャと魂の契約を結ぶ
				if (s.equalsIgnoreCase("0")) {
					if (!pc.getInventory().checkItem(41312)) { // 占星術師の壺
						final L1ItemInstance item = pc.getInventory().storeItem(41312, 1);
						if (item != null) {
							pc.sendPackets(new S_ServerMessage(143,
									((L1NpcInstance) obj).getNpcTemplate()
									.get_name(), item.getItem().getName())); // \f1%0が%1をくれました。
							pc.getQuest().set_step(L1Quest.QUEST_KEPLISHA,L1Quest.QUEST_END);
						}
						htmlid = "keplisha7";
					}
				}
				// 援助金を出して運勢を見る
				else if (s.equalsIgnoreCase("1")) {
					if (!pc.getInventory().checkItem(41314)) { // 占星術師のお守り
						if (pc.getInventory().checkItem(L1ItemId.ADENA, 1000)) {
							materials = new int[] { L1ItemId.ADENA, 41313 }; // アデナ、占星術師の玉
							counts = new int[] { 1000, 1 };
							createitem = new int[] { 41314 }; // 占星術師のお守り
							createcount = new int[] { 1 };
							final int htmlA = Random.nextInt(3) + 1;
							final int htmlB = Random.nextInt(100) + 1;
							switch (htmlA) {
							case 1:
								htmlid = "horosa" + htmlB; // horosa1 ~
								// horosa100
								break;
							case 2:
								htmlid = "horosb" + htmlB; // horosb1 ~
								// horosb100
								break;
							case 3:
								htmlid = "horosc" + htmlB; // horosc1 ~
								// horosc100
								break;
							default:
								break;
							}
						} else {
							htmlid = "keplisha8";
						}
					}
				}
				// ケプリシャから祝福を受ける
				else if (s.equalsIgnoreCase("2")) {
					if (pc.getTempCharGfx() != pc.getClassId()) {
						htmlid = "keplisha9";
					} else {
						if (pc.getInventory().checkItem(41314)) { // 占星術師のお守り
							pc.getInventory().consumeItem(41314, 1); // 占星術師のお守り
							final int html = Random.nextInt(9) + 1;
							final int PolyId = 6180 + Random.nextInt(64);
							this.polyByKeplisha(client, PolyId);
							switch (html) {
							case 1:
								htmlid = "horomon11";
								break;
							case 2:
								htmlid = "horomon12";
								break;
							case 3:
								htmlid = "horomon13";
								break;
							case 4:
								htmlid = "horomon21";
								break;
							case 5:
								htmlid = "horomon22";
								break;
							case 6:
								htmlid = "horomon23";
								break;
							case 7:
								htmlid = "horomon31";
								break;
							case 8:
								htmlid = "horomon32";
								break;
							case 9:
								htmlid = "horomon33";
								break;
							default:
								break;
							}
						}
					}
				}
				// 壺を割って契約を破棄する
				else if (s.equalsIgnoreCase("3")) {
					if (pc.getInventory().checkItem(41312)) { // 占星術師の壺
						pc.getInventory().consumeItem(41312, 1);
						htmlid = "";
					}
					if (pc.getInventory().checkItem(41313)) { // 占星術師の玉
						pc.getInventory().consumeItem(41313, 1);
						htmlid = "";
					}
					if (pc.getInventory().checkItem(41314)) { // 占星術師のお守り
						pc.getInventory().consumeItem(41314, 1);
						htmlid = "";
					}
				}
			}
			//TODO 修正釣魚小童傳送功能感謝by0968026609&BAO提供教學參考
			else if (npcid == 80082) {
				if (s.equalsIgnoreCase("a")) {
					if (pc.getInventory().checkItem(40308, 1000)) {
						pc.getInventory().consumeItem(40308,1000);
						L1PolyMorph.undoPoly(pc);
						L1Teleport.teleport(pc, 32736, 32811, (short) 5300, 6, true);
					} else {
						htmlid = "fk_in_0";
					}
				}
				//TODO 修正釣魚小童傳送功能by0968026609&BAO提供教學參考

				//TODO 修正釣魚小童傳送功能byBAO
			} else if (npcid == 80083) {
				if (s.equalsIgnoreCase("O")) {
					htmlid = "fk_out_0";
					L1Teleport.teleport(pc, 32613, 32781, (short) 4, 4, true);
				} else if (s.equalsIgnoreCase("teleportURL")) {
					htmlid = "fk_out_0";
				} else if (s.equalsIgnoreCase("teleport fishing-out")) { //teleportURL
					L1Teleport.teleport(pc, 32613, 32781, (short) 4, 4, true);
				}
			}
			//TODO 修正釣魚小童傳送功能byBAO

			//TODO 聖獸洞穴傳送師by0968026609
			else if (npcid == 81289) {
				if (s.equalsIgnoreCase("a")) {
					if (pc.getInventory().checkItem(40308, 10000)) {
						pc.getInventory().consumeItem(40308,10000);
						L1PolyMorph.undoPoly(pc);
						L1Teleport.teleport(pc, 32736, 32811, (short) 6003, 6, true);
					} else {
						htmlid = "xmasevent051";
					}
				}
			}
			//TODO 聖獸洞穴傳送師by0968026609

			//TODO 實裝新隱藏之谷卡斯鐵匠byBAO提供
			else if (npcid == 70517) {
				if (s.equalsIgnoreCase("fixFree")) {
					for (final L1ItemInstance item : pc.getInventory().getItems()) {
						if (pc.getWeapon().equals(item)) {
							if (pc.getWeapon().get_durability() >= 1) {
								pc.getWeapon().set_durability(0);
								pc.getInventory().updateItem(item, L1PcInventory.COL_DURABILITY);
								pc.sendPackets(new S_ServerMessage(464, item.getName()));
								htmlid = "";
							} else {
								htmlid = "cuse3";
							}
						}
					}
				}
			}
			//TODO 實裝新隱藏之谷卡斯鐵匠byBAO提供

			// 怪しいオーク商人 パルーム
			else if (npcid == 80084) {
				// 「資源リストをもらう」
				if (s.equalsIgnoreCase("q")) {
					if (pc.getInventory().checkItem(41356, 1)) {
						htmlid = "rparum4";
					} else {
						final L1ItemInstance item = pc.getInventory().storeItem(41356, 1);
						if (item != null) {
							pc.sendPackets(new S_ServerMessage(143,
									((L1NpcInstance) obj).getNpcTemplate()
									.get_name(), item.getItem().getName())); // \f1%0が%1をくれました。
						}
						htmlid = "rparum3";
					}
				}
			}
			// アデン騎馬団員
			else if (npcid == 80105) {
				// 「新たな力をくださいる」
				if (s.equalsIgnoreCase("c")) {
					if (pc.isCrown()) {
						if (pc.getInventory().checkItem(20383, 1)) {
							if (pc.getInventory().checkItem(L1ItemId.ADENA, 100000)) {
								final L1ItemInstance item = pc.getInventory().findItemId(
										20383);
								if (item != null && item.getChargeCount() != 50) {
									item.setChargeCount(50);
									pc.getInventory().updateItem(item,
											L1PcInventory.COL_CHARGE_COUNT);
									pc.getInventory().consumeItem(L1ItemId.ADENA,
											100000);
									htmlid = "";
								}
							} else {
								pc.sendPackets(new S_ServerMessage(337, "$4")); // アデナが不足しています。
							}
						}
					}
				}
			}
			// 補佐官イリス
			else if (npcid == 71126) {
				// 「はい。私がご協力しましょう」
				if (s.equalsIgnoreCase("B")) {
					if (pc.getInventory().checkItem(41007, 1)) { // イリスの命令書：霊魂の安息
						htmlid = "eris10";
					} else {
						final L1NpcInstance npc = (L1NpcInstance) obj;
						final L1ItemInstance item = pc.getInventory().storeItem(41007, 1);
						final String npcName = npc.getNpcTemplate().get_name();
						final String itemName = item.getItem().getName();
						pc.sendPackets(new S_ServerMessage(143, npcName, itemName));
						htmlid = "eris6";
					}
				} else if (s.equalsIgnoreCase("C")) {
					if (pc.getInventory().checkItem(41009, 1)) { // イリスの命令書：同盟の意思
						htmlid = "eris10";
					} else {
						final L1NpcInstance npc = (L1NpcInstance) obj;
						final L1ItemInstance item = pc.getInventory().storeItem(41009, 1);
						final String npcName = npc.getNpcTemplate().get_name();
						final String itemName = item.getItem().getName();
						pc.sendPackets(new S_ServerMessage(143, npcName, itemName));
						htmlid = "eris8";
					}
				} else if (s.equalsIgnoreCase("A")) {
					if (pc.getInventory().checkItem(41007, 1)) { // イリスの命令書：霊魂の安息
						if (pc.getInventory().checkItem(40969, 20)) { // ダークエルフ魂の結晶体
							htmlid = "eris18";
							materials = new int[] { 40969, 41007 };
							counts = new int[] { 20, 1 };
							createitem = new int[] { 41008 }; // イリスのバック
							createcount = new int[] { 1 };
						} else {
							htmlid = "eris5";
						}
					} else {
						htmlid = "eris2";
					}
				} else if (s.equalsIgnoreCase("E")) {
					if (pc.getInventory().checkItem(41010, 1)) { // イリスの推薦書
						htmlid = "eris19";
					} else {
						htmlid = "eris7";
					}
				} else if (s.equalsIgnoreCase("D")) {
					if (pc.getInventory().checkItem(41010, 1)) { // イリスの推薦書
						htmlid = "eris19";
					} else {
						if (pc.getInventory().checkItem(41009, 1)) { // イリスの命令書：同盟の意思
							if (pc.getInventory().checkItem(40959, 1)) { // 冥法軍王の印章
								htmlid = "eris17";
								materials = new int[] { 40959, 41009 }; // 冥法軍王の印章
								counts = new int[] { 1, 1 };
								createitem = new int[] { 41010 }; // イリスの推薦書
								createcount = new int[] { 1 };
							} else if (pc.getInventory().checkItem(40960, 1)) { // 魔霊軍王の印章
								htmlid = "eris16";
								materials = new int[] { 40960, 41009 }; // 魔霊軍王の印章
								counts = new int[] { 1, 1 };
								createitem = new int[] { 41010 }; // イリスの推薦書
								createcount = new int[] { 1 };
							} else if (pc.getInventory().checkItem(40961, 1)) { // 魔獣霊軍王の印章
								htmlid = "eris15";
								materials = new int[] { 40961, 41009 }; // 魔獣軍王の印章
								counts = new int[] { 1, 1 };
								createitem = new int[] { 41010 }; // イリスの推薦書
								createcount = new int[] { 1 };
							} else if (pc.getInventory().checkItem(40962, 1)) { // 暗殺軍王の印章
								htmlid = "eris14";
								materials = new int[] { 40962, 41009 }; // 暗殺軍王の印章
								counts = new int[] { 1, 1 };
								createitem = new int[] { 41010 }; // イリスの推薦書
								createcount = new int[] { 1 };
							} else if (pc.getInventory().checkItem(40635, 10)) { // 魔霊軍のバッジ
								htmlid = "eris12";
								materials = new int[] { 40635, 41009 }; // 魔霊軍のバッジ
								counts = new int[] { 10, 1 };
								createitem = new int[] { 41010 }; // イリスの推薦書
								createcount = new int[] { 1 };
							} else if (pc.getInventory().checkItem(40638, 10)) { // 魔獣軍のバッジ
								htmlid = "eris11";
								materials = new int[] { 40638, 41009 }; // 魔霊軍のバッジ
								counts = new int[] { 10, 1 };
								createitem = new int[] { 41010 }; // イリスの推薦書
								createcount = new int[] { 1 };
							} else if (pc.getInventory().checkItem(40642, 10)) { // 冥法軍のバッジ
								htmlid = "eris13";
								materials = new int[] { 40642, 41009 }; // 冥法軍のバッジ
								counts = new int[] { 10, 1 };
								createitem = new int[] { 41010 }; // イリスの推薦書
								createcount = new int[] { 1 };
							} else if (pc.getInventory().checkItem(40667, 10)) { // 暗殺軍のバッジ
								htmlid = "eris13";
								materials = new int[] { 40667, 41009 }; // 暗殺軍のバッジ
								counts = new int[] { 10, 1 };
								createitem = new int[] { 41010 }; // イリスの推薦書
								createcount = new int[] { 1 };
							} else {
								htmlid = "eris8";
							}
						} else {
							htmlid = "eris7";
						}
					}
				}
			}
			// 倒れた航海士
			else if (npcid == 80076) {
				if (s.equalsIgnoreCase("A")) {
					final int[] diaryno = { 49082, 49083 };
					final int pid = Random.nextInt(diaryno.length);
					final int di = diaryno[pid];
					if (di == 49082) { // 奇数ページ抜け
						htmlid = "voyager6a";
						final L1NpcInstance npc = (L1NpcInstance) obj;
						final L1ItemInstance item = pc.getInventory().storeItem(di, 1);
						final String npcName = npc.getNpcTemplate().get_name();
						final String itemName = item.getItem().getName();
						pc.sendPackets(new S_ServerMessage(143, npcName, itemName));
					} else if (di == 49083) { // 偶数ページ抜け
						htmlid = "voyager6b";
						final L1NpcInstance npc = (L1NpcInstance) obj;
						final L1ItemInstance item = pc.getInventory().storeItem(di, 1);
						final String npcName = npc.getNpcTemplate().get_name();
						final String itemName = item.getItem().getName();
						pc.sendPackets(new S_ServerMessage(143, npcName, itemName));
					}
				}
			}
			// 錬金術師 ペリター
			else if (npcid == 71128) {
				if (s.equals("A")) {
					if (pc.getInventory().checkItem(41010, 1)) { // イリスの推薦書
						htmlid = "perita2";
					} else {
						htmlid = "perita3";
					}
				} else if (s.equals("p")) {
					// 呪われたブラックイアリング判別
					if (pc.getInventory().checkItem(40987, 1) // ウィザードクラス
							&& pc.getInventory().checkItem(40988, 1) // ナイトクラス
							&& pc.getInventory().checkItem(40989, 1)) { // ウォーリアクラス
						htmlid = "perita43";
					} else if (pc.getInventory().checkItem(40987, 1) // ウィザードクラス
							&& pc.getInventory().checkItem(40989, 1)) { // ウォーリアクラス
						htmlid = "perita44";
					} else if (pc.getInventory().checkItem(40987, 1) // ウィザードクラス
							&& pc.getInventory().checkItem(40988, 1)) { // ナイトクラス
						htmlid = "perita45";
					} else if (pc.getInventory().checkItem(40988, 1) // ナイトクラス
							&& pc.getInventory().checkItem(40989, 1)) { // ウォーリアクラス
						htmlid = "perita47";
					} else if (pc.getInventory().checkItem(40987, 1)) { // ウィザードクラス
						htmlid = "perita46";
					} else if (pc.getInventory().checkItem(40988, 1)) { // ナイトクラス
						htmlid = "perita49";
					} else if (pc.getInventory().checkItem(40987, 1)) { // ウォーリアクラス
						htmlid = "perita48";
					} else {
						htmlid = "perita50";
					}
				} else if (s.equals("q")) {
					// ブラックイアリング判別
					if (pc.getInventory().checkItem(41173, 1) // ウィザードクラス
							&& pc.getInventory().checkItem(41174, 1) // ナイトクラス
							&& pc.getInventory().checkItem(41175, 1)) { // ウォーリアクラス
						htmlid = "perita54";
					} else if (pc.getInventory().checkItem(41173, 1) // ウィザードクラス
							&& pc.getInventory().checkItem(41175, 1)) { // ウォーリアクラス
						htmlid = "perita55";
					} else if (pc.getInventory().checkItem(41173, 1) // ウィザードクラス
							&& pc.getInventory().checkItem(41174, 1)) { // ナイトクラス
						htmlid = "perita56";
					} else if (pc.getInventory().checkItem(41174, 1) // ナイトクラス
							&& pc.getInventory().checkItem(41175, 1)) { // ウォーリアクラス
						htmlid = "perita58";
					} else if (pc.getInventory().checkItem(41174, 1)) { // ウィザードクラス
						htmlid = "perita57";
					} else if (pc.getInventory().checkItem(41175, 1)) { // ナイトクラス
						htmlid = "perita60";
					} else if (pc.getInventory().checkItem(41176, 1)) { // ウォーリアクラス
						htmlid = "perita59";
					} else {
						htmlid = "perita61";
					}
				} else if (s.equals("s")) {
					// ミステリアス ブラックイアリング判別
					if (pc.getInventory().checkItem(41161, 1) // ウィザードクラス
							&& pc.getInventory().checkItem(41162, 1) // ナイトクラス
							&& pc.getInventory().checkItem(41163, 1)) { // ウォーリアクラス
						htmlid = "perita62";
					} else if (pc.getInventory().checkItem(41161, 1) // ウィザードクラス
							&& pc.getInventory().checkItem(41163, 1)) { // ウォーリアクラス
						htmlid = "perita63";
					} else if (pc.getInventory().checkItem(41161, 1) // ウィザードクラス
							&& pc.getInventory().checkItem(41162, 1)) { // ナイトクラス
						htmlid = "perita64";
					} else if (pc.getInventory().checkItem(41162, 1) // ナイトクラス
							&& pc.getInventory().checkItem(41163, 1)) { // ウォーリアクラス
						htmlid = "perita66";
					} else if (pc.getInventory().checkItem(41161, 1)) { // ウィザードクラス
						htmlid = "perita65";
					} else if (pc.getInventory().checkItem(41162, 1)) { // ナイトクラス
						htmlid = "perita68";
					} else if (pc.getInventory().checkItem(41163, 1)) { // ウォーリアクラス
						htmlid = "perita67";
					} else {
						htmlid = "perita69";
					}
				} else if (s.equals("B")) {
					// 浄化のポーション
					if (pc.getInventory().checkItem(40651, 10) // 火の息吹
							&& pc.getInventory().checkItem(40643, 10) // 水の息吹
							&& pc.getInventory().checkItem(40618, 10) // 大地の息吹
							&& pc.getInventory().checkItem(40645, 10) // 風の息吹
							&& pc.getInventory().checkItem(40676, 10) // 闇の息吹
							&& pc.getInventory().checkItem(40442, 5) // プロッブの胃液
							&& pc.getInventory().checkItem(40051, 1)) { // 高級エメラルド
						htmlid = "perita7";
						materials = new int[] { 40651, 40643, 40618, 40645, 40676,
								40442, 40051 };
						counts = new int[] { 10, 10, 10, 10, 20, 5, 1 };
						createitem = new int[] { 40925 }; // 浄化のポーション
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita8";
					}
				} else if (s.equals("G") || s.equals("h") || s.equals("i")) {
					// ミステリアス ポーション：１段階
					if (pc.getInventory().checkItem(40651, 5) // 火の息吹
							&& pc.getInventory().checkItem(40643, 5) // 水の息吹
							&& pc.getInventory().checkItem(40618, 5) // 大地の息吹
							&& pc.getInventory().checkItem(40645, 5) // 風の息吹
							&& pc.getInventory().checkItem(40676, 5) // 闇の息吹
							&& pc.getInventory().checkItem(40675, 5) // 闇の鉱石
							&& pc.getInventory().checkItem(40049, 3) // 高級ルビー
							&& pc.getInventory().checkItem(40051, 1)) { // 高級エメラルド
						htmlid = "perita27";
						materials = new int[] { 40651, 40643, 40618, 40645, 40676,
								40675, 40049, 40051 };
						counts = new int[] { 5, 5, 5, 5, 10, 10, 3, 1 };
						createitem = new int[] { 40926 }; // ミステリアスポーション：１段階
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita28";
					}
				} else if (s.equals("H") || s.equals("j") || s.equals("k")) {
					// ミステリアス ポーション：２段階
					if (pc.getInventory().checkItem(40651, 10) // 火の息吹
							&& pc.getInventory().checkItem(40643, 10) // 水の息吹
							&& pc.getInventory().checkItem(40618, 10) // 大地の息吹
							&& pc.getInventory().checkItem(40645, 10) // 風の息吹
							&& pc.getInventory().checkItem(40676, 20) // 闇の息吹
							&& pc.getInventory().checkItem(40675, 10) // 闇の鉱石
							&& pc.getInventory().checkItem(40048, 3) // 高級ダイアモンド
							&& pc.getInventory().checkItem(40051, 1)) { // 高級エメラルド
						htmlid = "perita29";
						materials = new int[] { 40651, 40643, 40618, 40645, 40676,
								40675, 40048, 40051 };
						counts = new int[] { 10, 10, 10, 10, 20, 10, 3, 1 };
						createitem = new int[] { 40927 }; // ミステリアスポーション：２段階
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita30";
					}
				} else if (s.equals("I") || s.equals("l") || s.equals("m")) {
					// ミステリアス ポーション：３段階
					if (pc.getInventory().checkItem(40651, 20) // 火の息吹
							&& pc.getInventory().checkItem(40643, 20) // 水の息吹
							&& pc.getInventory().checkItem(40618, 20) // 大地の息吹
							&& pc.getInventory().checkItem(40645, 20) // 風の息吹
							&& pc.getInventory().checkItem(40676, 30) // 闇の息吹
							&& pc.getInventory().checkItem(40675, 10) // 闇の鉱石
							&& pc.getInventory().checkItem(40050, 3) // 高級サファイア
							&& pc.getInventory().checkItem(40051, 1)) { // 高級エメラルド
						htmlid = "perita31";
						materials = new int[] { 40651, 40643, 40618, 40645, 40676,
								40675, 40050, 40051 };
						counts = new int[] { 20, 20, 20, 20, 30, 10, 3, 1 };
						createitem = new int[] { 40928 }; // ミステリアスポーション：３段階
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita32";
					}
				} else if (s.equals("J") || s.equals("n") || s.equals("o")) {
					// ミステリアス ポーション：４段階
					if (pc.getInventory().checkItem(40651, 30) // 火の息吹
							&& pc.getInventory().checkItem(40643, 30) // 水の息吹
							&& pc.getInventory().checkItem(40618, 30) // 大地の息吹
							&& pc.getInventory().checkItem(40645, 30) // 風の息吹
							&& pc.getInventory().checkItem(40676, 30) // 闇の息吹
							&& pc.getInventory().checkItem(40675, 20) // 闇の鉱石
							&& pc.getInventory().checkItem(40052, 1) // 最高級ダイアモンド
							&& pc.getInventory().checkItem(40051, 1)) { // 高級エメラルド
						htmlid = "perita33";
						materials = new int[] { 40651, 40643, 40618, 40645, 40676,
								40675, 40052, 40051 };
						counts = new int[] { 30, 30, 30, 30, 30, 20, 1, 1 };
						createitem = new int[] { 40928 }; // ミステリアスポーション：４段階
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita34";
					}
				} else if (s.equals("K")) { // １段階イアリング(霊魂のイアリング)
					int earinga = 0;
					int earingb = 0;
					if (pc.getInventory().checkEquipped(21014)
							|| pc.getInventory().checkEquipped(21006)
							|| pc.getInventory().checkEquipped(21007)) {
						htmlid = "perita36";
					} else if (pc.getInventory().checkItem(21014, 1)) { // ウィザードクラス
						earinga = 21014;
						earingb = 41176;
					} else if (pc.getInventory().checkItem(21006, 1)) { // ナイトクラス
						earinga = 21006;
						earingb = 41177;
					} else if (pc.getInventory().checkItem(21007, 1)) { // ウォーリアクラス
						earinga = 21007;
						earingb = 41178;
					} else {
						htmlid = "perita36";
					}
					if (earinga > 0) {
						materials = new int[] { earinga };
						counts = new int[] { 1 };
						createitem = new int[] { earingb };
						createcount = new int[] { 1 };
					}
				} else if (s.equals("L")) { // ２段階イアリング(知恵のイアリング)
					if (pc.getInventory().checkEquipped(21015)) {
						htmlid = "perita22";
					} else if (pc.getInventory().checkItem(21015, 1)) {
						materials = new int[] { 21015 };
						counts = new int[] { 1 };
						createitem = new int[] { 41179 };
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita22";
					}
				} else if (s.equals("M")) { // ３段階イアリング(真実のイアリング)
					if (pc.getInventory().checkEquipped(21016)) {
						htmlid = "perita26";
					} else if (pc.getInventory().checkItem(21016, 1)) {
						materials = new int[] { 21016 };
						counts = new int[] { 1 };
						createitem = new int[] { 41182 };
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita26";
					}
				} else if (s.equals("b")) { // ２段階イアリング(情熱のイアリング)
					if (pc.getInventory().checkEquipped(21009)) {
						htmlid = "perita39";
					} else if (pc.getInventory().checkItem(21009, 1)) {
						materials = new int[] { 21009 };
						counts = new int[] { 1 };
						createitem = new int[] { 41180 };
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita39";
					}
				} else if (s.equals("d")) { // ３段階イアリング(名誉のイアリング)
					if (pc.getInventory().checkEquipped(21012)) {
						htmlid = "perita41";
					} else if (pc.getInventory().checkItem(21012, 1)) {
						materials = new int[] { 21012 };
						counts = new int[] { 1 };
						createitem = new int[] { 41183 };
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita41";
					}
				} else if (s.equals("a")) { // ２段階イアリング(憤怒のイアリング)
					if (pc.getInventory().checkEquipped(21008)) {
						htmlid = "perita38";
					} else if (pc.getInventory().checkItem(21008, 1)) {
						materials = new int[] { 21008 };
						counts = new int[] { 1 };
						createitem = new int[] { 41181 };
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita38";
					}
				} else if (s.equals("c")) { // ３段階イアリング(勇猛のイアリング)
					if (pc.getInventory().checkEquipped(21010)) {
						htmlid = "perita40";
					} else if (pc.getInventory().checkItem(21010, 1)) {
						materials = new int[] { 21010 };
						counts = new int[] { 1 };
						createitem = new int[] { 41184 };
						createcount = new int[] { 1 };
					} else {
						htmlid = "perita40";
					}
				}
			}
			// 宝石細工師 ルームィス
			else if (npcid == 71129) {
				if (s.equals("Z")) {
					htmlid = "rumtis2";
				} else if (s.equals("Y")) {
					if (pc.getInventory().checkItem(41010, 1)) { // イリスの推薦書
						htmlid = "rumtis3";
					} else {
						htmlid = "rumtis4";
					}
				} else if (s.equals("q")) {
					htmlid = "rumtis92";
				} else if (s.equals("A")) {
					if (pc.getInventory().checkItem(41161, 1)) {
						// ミステリアスブラックイアリング
						htmlid = "rumtis6";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("B")) {
					if (pc.getInventory().checkItem(41164, 1)) {
						// ミステリアスウィザードイアリング
						htmlid = "rumtis7";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("C")) {
					if (pc.getInventory().checkItem(41167, 1)) {
						// ミステリアスグレーウィザードイアリング
						htmlid = "rumtis8";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("T")) {
					if (pc.getInventory().checkItem(41167, 1)) {
						// ミステリアスホワイトウィザードイアリング
						htmlid = "rumtis9";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("w")) {
					if (pc.getInventory().checkItem(41162, 1)) {
						// ミステリアスブラックイアリング
						htmlid = "rumtis14";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("x")) {
					if (pc.getInventory().checkItem(41165, 1)) {
						// ミステリアスナイトイアリング
						htmlid = "rumtis15";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("y")) {
					if (pc.getInventory().checkItem(41168, 1)) {
						// ミステリアスグレーナイトイアリング
						htmlid = "rumtis16";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("z")) {
					if (pc.getInventory().checkItem(41171, 1)) {
						// ミステリアスホワイトナイトイアリング
						htmlid = "rumtis17";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("U")) {
					if (pc.getInventory().checkItem(41163, 1)) {
						// ミステリアスブラックイアリング
						htmlid = "rumtis10";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("V")) {
					if (pc.getInventory().checkItem(41166, 1)) {
						// ミステリアスウォーリアイアリング
						htmlid = "rumtis11";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("W")) {
					if (pc.getInventory().checkItem(41169, 1)) {
						// ミステリアスグレーウォーリアイアリング
						htmlid = "rumtis12";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("X")) {
					if (pc.getInventory().checkItem(41172, 1)) {
						// ミステリアスホワイウォーリアイアリング
						htmlid = "rumtis13";
					} else {
						htmlid = "rumtis101";
					}
				} else if (s.equals("D") || s.equals("E") || s.equals("F")
						|| s.equals("G")) {
					int insn = 0;
					int bacn = 0;
					int me = 0;
					int mr = 0;
					int mj = 0;
					int an = 0;
					int men = 0;
					int mrn = 0;
					int mjn = 0;
					int ann = 0;
					if (pc.getInventory().checkItem(40959, 1) // 冥法軍王の印章
							&& pc.getInventory().checkItem(40960, 1) // 魔霊軍王の印章
							&& pc.getInventory().checkItem(40961, 1) // 魔獣軍王の印章
							&& pc.getInventory().checkItem(40962, 1)) { // 暗殺軍王の印章
						insn = 1;
						me = 40959;
						mr = 40960;
						mj = 40961;
						an = 40962;
						men = 1;
						mrn = 1;
						mjn = 1;
						ann = 1;
					} else if (pc.getInventory().checkItem(40642, 10) // 冥法軍のバッジ
							&& pc.getInventory().checkItem(40635, 10) // 魔霊軍のバッジ
							&& pc.getInventory().checkItem(40638, 10) // 魔獣軍のバッジ
							&& pc.getInventory().checkItem(40667, 10)) { // 暗殺軍のバッジ
						bacn = 1;
						me = 40642;
						mr = 40635;
						mj = 40638;
						an = 40667;
						men = 10;
						mrn = 10;
						mjn = 10;
						ann = 10;
					}
					if (pc.getInventory().checkItem(40046, 1) // サファイア
							&& pc.getInventory().checkItem(40618, 5) // 大地の息吹
							&& pc.getInventory().checkItem(40643, 5) // 水の息吹
							&& pc.getInventory().checkItem(40645, 5) // 風の息吹
							&& pc.getInventory().checkItem(40651, 5) // 火の息吹
							&& pc.getInventory().checkItem(40676, 5)) { // 闇の息吹
						if (insn == 1 || bacn == 1) {
							htmlid = "rumtis60";
							materials = new int[] { me, mr, mj, an, 40046, 40618,
									40643, 40651, 40676 };
							counts = new int[] { men, mrn, mjn, ann, 1, 5, 5, 5, 5,
									5 };
							createitem = new int[] { 40926 }; // 加工されたサファイア：１段階
							createcount = new int[] { 1 };
						} else {
							htmlid = "rumtis18";
						}
					}
				}
			}
			// アタロゼ
			else if (npcid == 71119) {
				// 「ラスタバドの歴史書1章から8章まで全部渡す」
				if (s.equalsIgnoreCase("request las history book")) {
					materials = new int[] { 41019, 41020, 41021, 41022, 41023,
							41024, 41025, 41026 };
					counts = new int[] { 1, 1, 1, 1, 1, 1, 1, 1 };
					createitem = new int[] { 41027 };
					createcount = new int[] { 1 };
					htmlid = "";
				}
			}
			// 長老随行員クロレンス
			else if (npcid == 71170) {
				// 「ラスタバドの歴史書を渡す」
				if (s.equalsIgnoreCase("request las weapon manual")) {
					materials = new int[] { 41027 };
					counts = new int[] { 1 };
					createitem = new int[] { 40965 };
					createcount = new int[] { 1 };
					htmlid = "";
				}
			}
			// 真冥王 ダンテス
			else if (npcid == 71168) {
				// 「異界の魔物がいる場所へ送ってください」
				if (s.equalsIgnoreCase("a")) {
					if (pc.getInventory().checkItem(41028, 1)) {
						L1Teleport.teleport(pc, 32648, 32921, (short) 535, 6, true);
						pc.getInventory().consumeItem(41028, 1);
					}
				}
			}
			// 諜報員(欲望の洞窟側)
			else if (npcid == 80067) {
				// 「動揺しつつも承諾する」
				if (s.equalsIgnoreCase("n")) {
					htmlid = "";
					this.poly(client, 6034);
					final int[] item_ids = { 41132, 41133, 41134 };
					final int[] item_amounts = { 1, 1, 1 };
					for (int i = 0; i < item_ids.length; i++) {
						final L1ItemInstance item = pc.getInventory().storeItem(
								item_ids[i], item_amounts[i]);
						pc.sendPackets(new S_ServerMessage(143,
								((L1NpcInstance) obj).getNpcTemplate().get_name(),
								item.getItem().getName()));
						pc.getQuest().set_step(L1Quest.QUEST_DESIRE, 1);
					}
					// 「そんな任務はやめる」
				} else if (s.equalsIgnoreCase("d")) {
					htmlid = "minicod09";
					pc.getInventory().consumeItem(41130, 1);
					pc.getInventory().consumeItem(41131, 1);
					// 「初期化する」
				} else if (s.equalsIgnoreCase("k")) {
					htmlid = "";
					pc.getInventory().consumeItem(41132, 1); // 血痕の堕落した粉
					pc.getInventory().consumeItem(41133, 1); // 血痕の無力した粉
					pc.getInventory().consumeItem(41134, 1); // 血痕の我執した粉
					pc.getInventory().consumeItem(41135, 1); // カヘルの堕落した精髄
					pc.getInventory().consumeItem(41136, 1); // カヘルの無力した精髄
					pc.getInventory().consumeItem(41137, 1); // カヘルの我執した精髄
					pc.getInventory().consumeItem(41138, 1); // カヘルの精髄
					pc.getQuest().set_step(L1Quest.QUEST_DESIRE, 0);
					// 精髄を渡す
				} else if (s.equalsIgnoreCase("e")) {
					if (pc.getQuest().get_step(L1Quest.QUEST_DESIRE) == L1Quest.QUEST_END
							|| pc.getKarmaLevel() >= 1) {
						htmlid = "";
					} else {
						if (pc.getInventory().checkItem(41138)) {
							htmlid = "";
							pc.addKarma((int) (1600 * Config.RATE_KARMA));
							pc.getInventory().consumeItem(41130, 1); // 血痕の契約書
							pc.getInventory().consumeItem(41131, 1); // 血痕の指令書
							pc.getInventory().consumeItem(41138, 1); // カヘルの精髄
							pc.getQuest().set_step(L1Quest.QUEST_DESIRE,
									L1Quest.QUEST_END);
						} else {
							htmlid = "minicod04";
						}
					}
					// プレゼントをもらう
				} else if (s.equalsIgnoreCase("g")) {
					htmlid = "";
					final L1ItemInstance item = pc.getInventory().storeItem(41130 , 1); // 血痕の契約書
					pc.sendPackets(new S_ServerMessage(143,
							((L1NpcInstance) obj).getNpcTemplate().get_name(),
							item.getItem().getName()));
				}
			}
			// 諜報員(影の神殿側)
			else if (npcid == 81202) {
				// 「頭にくるが承諾する」
				if (s.equalsIgnoreCase("n")) {
					htmlid = "";
					this.poly(client, 6035);
					final int[] item_ids = { 41123, 41124, 41125 };
					final int[] item_amounts = { 1, 1, 1 };
					for (int i = 0; i < item_ids.length; i++) {
						final L1ItemInstance item = pc.getInventory().storeItem(
								item_ids[i], item_amounts[i]);
						pc.sendPackets(new S_ServerMessage(143,
								((L1NpcInstance) obj).getNpcTemplate().get_name(),
								item.getItem().getName()));
						pc.getQuest().set_step(L1Quest.QUEST_SHADOWS, 1);
					}
					// 「そんな任務はやめる」
				} else if (s.equalsIgnoreCase("d")) {
					htmlid = "minitos09";
					pc.getInventory().consumeItem(41121, 1);
					pc.getInventory().consumeItem(41122, 1);
					// 「初期化する」
				} else if (s.equalsIgnoreCase("k")) {
					htmlid = "";
					pc.getInventory().consumeItem(41123, 1); // カヘルの堕落した粉
					pc.getInventory().consumeItem(41124, 1); // カヘルの無力した粉
					pc.getInventory().consumeItem(41125, 1); // カヘルの我執した粉
					pc.getInventory().consumeItem(41126, 1); // 血痕の堕落した精髄
					pc.getInventory().consumeItem(41127, 1); // 血痕の無力した精髄
					pc.getInventory().consumeItem(41128, 1); // 血痕の我執した精髄
					pc.getInventory().consumeItem(41129, 1); // 血痕の精髄
					pc.getQuest().set_step(L1Quest.QUEST_SHADOWS, 0);
					// 精髄を渡す
				} else if (s.equalsIgnoreCase("e")) {
					if (pc.getQuest().get_step(L1Quest.QUEST_SHADOWS) == L1Quest.QUEST_END
							|| pc.getKarmaLevel() >= 1) {
						htmlid = "";
					} else {
						if (pc.getInventory().checkItem(41129)) {
							htmlid = "";
							pc.addKarma((int) (-1600 * Config.RATE_KARMA));
							pc.getInventory().consumeItem(41121, 1); // カヘルの契約書
							pc.getInventory().consumeItem(41122, 1); // カヘルの指令書
							pc.getInventory().consumeItem(41129, 1); // 血痕の精髄
							pc.getQuest().set_step(L1Quest.QUEST_SHADOWS,
									L1Quest.QUEST_END);
						} else {
							htmlid = "minitos04";
						}
					}
					// 素早く受取る
				} else if (s.equalsIgnoreCase("g")) {
					htmlid = "";
					final L1ItemInstance item = pc.getInventory().storeItem(41121 , 1); // カヘルの契約書
					pc.sendPackets(new S_ServerMessage(143,
							((L1NpcInstance) obj).getNpcTemplate().get_name(),
							item.getItem().getName()));
				}
			}
			// ゾウのストーンゴーレム
			else if (npcid == 71252) {
				int weapon1 = 0;
				int weapon2 = 0;
				int newWeapon = 0;
				if (s.equalsIgnoreCase("A")) {
					weapon1 = 5; // +7エルヴンダガー
					weapon2 = 6; // +7ラスタバドダガー
					newWeapon = 259; // マナバーラード
					htmlid = "joegolem9";
				} else if (s.equalsIgnoreCase("B")) {
					weapon1 = 145; // +7バーサーカーアックス
					weapon2 = 148; // +7グレートアックス
					newWeapon = 260; // レイジングウィンド
					htmlid = "joegolem10";
				} else if (s.equalsIgnoreCase("C")) {
					weapon1 = 52; // +7ツーハンドソード
					weapon2 = 64; // +7グレートソード
					newWeapon = 262; // ディストラクション
					htmlid = "joegolem11";
				} else if (s.equalsIgnoreCase("D")) {
					weapon1 = 125; // +7ソーサリースタッフ
					weapon2 = 129; // +7メイジスタッフ
					newWeapon = 261; // アークメイジスタッフ
					htmlid = "joegolem12";
				} else if (s.equalsIgnoreCase("E")) {
					weapon1 = 99; // +7エルブンスピアー
					weapon2 = 104; // +7フォチャード
					newWeapon = 263; // フリージングランサー
					htmlid = "joegolem13";
				} else if (s.equalsIgnoreCase("F")) {
					weapon1 = 32; // +7グラディウス
					weapon2 = 42; // +7レイピア
					newWeapon = 264; // ライトニングエッジ
					htmlid = "joegolem14";
				}
				if (pc.getInventory().checkEnchantItem(weapon1, 7, 1)
						&& pc.getInventory().checkEnchantItem(weapon2, 7, 1)
						&& pc.getInventory().checkItem(41246, 1000) // 結晶体
						&& pc.getInventory().checkItem(49143, 10)) { // 勇気の結晶
					pc.getInventory().consumeEnchantItem(weapon1, 7, 1);
					pc.getInventory().consumeEnchantItem(weapon2, 7, 1);
					pc.getInventory().consumeItem(41246,1000);
					pc.getInventory().consumeItem(49143,10);
					final L1ItemInstance item = pc.getInventory().storeItem(newWeapon, 1);
					pc.sendPackets(new S_ServerMessage(143,((L1NpcInstance) obj).getNpcTemplate().get_name(),item.getItem().getName()));
				} else {
					htmlid = "joegolem15";
					if (!pc.getInventory().checkEnchantItem(weapon1, 7, 1)) {
						pc.sendPackets(new S_ServerMessage(337, "+7 "+ ItemTable.getInstance().getTemplate(weapon1).getName())); // \f1%0が不足しています。
					}
					if (!pc.getInventory().checkEnchantItem(weapon2, 7, 1)) {
						pc.sendPackets(new S_ServerMessage(337, "+7 "+ ItemTable.getInstance().getTemplate(weapon2).getName())); // \f1%0が不足しています。
					}
					if (!pc.getInventory().checkItem(41246, 1000)) {
						int itemCount = 0;
						itemCount = (int) (1000 - pc.getInventory().countItems(41246));
						pc.sendPackets(new S_ServerMessage(337, ItemTable.getInstance().getTemplate(41246).getName()+ "(" + itemCount + ")" )); // \f1%0が不足しています。
					}
					if (!pc.getInventory().checkItem(49143, 10)) {
						int itemCount = 0;
						itemCount = (int) (10 - pc.getInventory().countItems(49143));
						pc.sendPackets(new S_ServerMessage(337, ItemTable.getInstance().getTemplate(49143).getName()+ "(" + itemCount + ")" )); // \f1%0が不足しています。
					}
				}
			}
			// ゾウのストーンゴーレム テーベ砂漠
			else if (npcid == 71253) {
				// 「歪みのコアを作る」
				if (s.equalsIgnoreCase("A")) {
					if (pc.getInventory().checkItem(49101, 100)) {
						materials = new int[] { 49101 };
						counts = new int[] { 100 };
						createitem = new int[] { 49092 };
						createcount = new int[] { 1 };
						htmlid = "joegolem18";
					} else {
						htmlid = "joegolem19";
					}
				} else if (s.equalsIgnoreCase("B")) {
					if (pc.getInventory().checkItem(49101, 1)) {
						pc.getInventory().consumeItem(49101, 1);
						L1Teleport.teleport(pc, 33966, 33253, (short) 4, 5, true);
						htmlid = "";
					} else {
						htmlid = "joegolem20";
					}
				}
			}
			// テーベ オシリス祭壇のキーパー
			else if (npcid == 71255) {
				// 「テーベオシリス祭壇の鍵を持っているなら、オシリスの祭壇にお送りしましょう。」
				if (s.equalsIgnoreCase("e")) {
					if (pc.getInventory().checkItem(49242, 1)) { // 鍵のチェック(20人限定/時の歪みが現れてから2h30は未実装)
						pc.getInventory().consumeItem(49242, 1);
						L1Teleport.teleport(pc, 32735, 32831, (short) 782, 2, true);
						htmlid = "";
					} else {
						htmlid = "tebegate3";
						// 「上限人数に達している場合は」
						// htmlid = "tebegate4";
					}
				}
			}
			//TODO 庫庫爾祭壇祭壇守門員檢查 庫庫爾坎祭壇鑰匙by0968026609
			else if (npcid == 81288) {
				if (s.equalsIgnoreCase("thebesboss")) { //TODO 我準備好了
					if (pc.getInventory().checkItem(240114)) { //TODO 檢查庫庫爾坎祭壇鑰匙
						pc.getInventory().consumeItem(240114, 1); //TODO 刪除 庫庫爾坎祭壇鑰匙
						L1Teleport.teleport(pc, 32730, 32866, (short) 784, 2, true); //TODO 傳送至 首領房間
					} else {
						htmlid = "thebes02"; //TODO 身上無鑰匙對話
					}
				}
				//TODO 庫庫爾祭壇祭壇守門員檢查 庫庫爾坎祭壇鑰匙by0968026609
			}else if (npcid == 71256) {	// ロビンフッド
				if (s.equalsIgnoreCase("E")) {
					if (pc.getQuest().get_step(L1Quest.QUEST_MOONOFLONGBOW) == 8
							&& pc.getInventory().checkItem(40491,30)
							&& pc.getInventory().checkItem(40495,40)
							&& pc.getInventory().checkItem(100,1)
							&& pc.getInventory().checkItem(40509,12)
							&& pc.getInventory().checkItem(40052,1)
							&& pc.getInventory().checkItem(40053,1)
							&& pc.getInventory().checkItem(40054,1)
							&& pc.getInventory().checkItem(40055,1)
							&& pc.getInventory().checkItem(41347,1)
							&& pc.getInventory().checkItem(41350,1)) {
						pc.getInventory().consumeItem(40491,30);
						pc.getInventory().consumeItem(40495,40);
						pc.getInventory().consumeItem(100,1);
						pc.getInventory().consumeItem(40509,12);
						pc.getInventory().consumeItem(40052,1);
						pc.getInventory().consumeItem(40053,1);
						pc.getInventory().consumeItem(40054,1);
						pc.getInventory().consumeItem(40055,1);
						pc.getInventory().consumeItem(41347,1);
						pc.getInventory().consumeItem(41350,1);
						htmlid = "robinhood12";
						pc.getInventory().storeItem(205,1);
						pc.getQuest().set_step(L1Quest.QUEST_MOONOFLONGBOW, L1Quest.QUEST_END);
					}
				} else if (s.equalsIgnoreCase("C")) {
					if (pc.getQuest().get_step(L1Quest.QUEST_MOONOFLONGBOW) == 7) {
						if (pc.getInventory().checkItem(41352,4)
								&& pc.getInventory().checkItem(40618,30)
								&& pc.getInventory().checkItem(40643,30)
								&& pc.getInventory().checkItem(40645,30)
								&& pc.getInventory().checkItem(40651,30)
								&& pc.getInventory().checkItem(40676,30)
								&& pc.getInventory().checkItem(40514,20)
								&& pc.getInventory().checkItem(41351,1)
								&& pc.getInventory().checkItem(41346,1)) {
							pc.getInventory().consumeItem(41352,4);
							pc.getInventory().consumeItem(40618,30);
							pc.getInventory().consumeItem(40643,30);
							pc.getInventory().consumeItem(40645,30);
							pc.getInventory().consumeItem(40651,30);
							pc.getInventory().consumeItem(40676,30);
							pc.getInventory().consumeItem(40514,20);
							pc.getInventory().consumeItem(41351,1);
							pc.getInventory().consumeItem(41346,1);
							pc.getInventory().storeItem(41347,1);
							pc.getInventory().storeItem(41350,1);
							htmlid = "robinhood10";
							pc.getQuest().set_step(L1Quest.QUEST_MOONOFLONGBOW, 8);
						}
					}
				} else if (s.equalsIgnoreCase("B")) {
					if (pc.getInventory().checkItem(41348)
							&& pc.getInventory().checkItem(41346)) {
						htmlid = "robinhood13";
					} else {
						pc.getInventory().storeItem(41348,1);
						pc.getInventory().storeItem(41346,1);
						htmlid = "robinhood13";
						pc.getQuest().set_step(L1Quest.QUEST_MOONOFLONGBOW, 2);
					}
				} else if (s.equalsIgnoreCase("A")) {
					if (pc.getInventory().checkItem(40028)) {
						pc.getInventory().consumeItem(40028,1);
						htmlid = "robinhood4";
						pc.getQuest().set_step(L1Quest.QUEST_MOONOFLONGBOW, 1);
					} else {
						htmlid = "robinhood19";
					}
				}
			}else if (npcid == 71257) {// ジブリル
				if (s.equalsIgnoreCase("D")) {
					if (pc.getInventory().checkItem(41349)) {
						htmlid ="zybril10";
						pc.getInventory().storeItem(41351,1);
						pc.getInventory().consumeItem(41349,1);
						pc.getQuest().set_step(L1Quest.QUEST_MOONOFLONGBOW, 7);
					} else {
						htmlid ="zybril14";
					}
				} else if (s.equalsIgnoreCase("C")) {
					if (pc.getInventory().checkItem(40514,10)
							&& pc.getInventory().checkItem(41353)) {
						pc.getInventory().consumeItem(40514,10);
						pc.getInventory().consumeItem(41353,1);
						pc.getInventory().storeItem(41354,1);
						htmlid ="zybril9";
						pc.getQuest().set_step(L1Quest.QUEST_MOONOFLONGBOW, 6);
					}
				} else if (pc.getInventory().checkItem(41353)
						&& pc.getInventory().checkItem(40514,10)) {
					htmlid = "zybril8";
				} else if (s.equalsIgnoreCase("B")) {
					if (pc.getInventory().checkItem(40048,10)
							&& pc.getInventory().checkItem(40049,10)
							&& pc.getInventory().checkItem(40050,10)
							&& pc.getInventory().checkItem(40051,10)) {
						pc.getInventory().consumeItem(40048,10);
						pc.getInventory().consumeItem(40049,10);
						pc.getInventory().consumeItem(40050,10);
						pc.getInventory().consumeItem(40051,10);
						pc.getInventory().storeItem(41353,1);
						htmlid = "zybril15";
						pc.getQuest().set_step(L1Quest.QUEST_MOONOFLONGBOW, 5);
					} else {
						htmlid = "zybril12";
						pc.getQuest().set_step(L1Quest.QUEST_MOONOFLONGBOW, 4);
					}
				} else if (s.equalsIgnoreCase("A")) {
					if (pc.getInventory().checkItem(41348)
							&& pc.getInventory().checkItem(41346)) {
						htmlid = "zybril3";
						pc.getQuest().set_step(L1Quest.QUEST_MOONOFLONGBOW, 3);
					} else {
						htmlid = "zybril11";
					}
				}
			}else if (npcid == 71258) {// マルバ
				if (pc.getInventory().checkItem(40665)) {
					htmlid = "marba17";
					if (s.equalsIgnoreCase("B")) {
						htmlid = "marba7";
						if (pc.getInventory().checkItem(214)
								&& pc.getInventory().checkItem(20389)
								&& pc.getInventory().checkItem(20393)
								&& pc.getInventory().checkItem(20401)
								&& pc.getInventory().checkItem(20406)
								&& pc.getInventory().checkItem(20409)) {
							htmlid = "marba15";
						}
					}
				} else if (s.equalsIgnoreCase("A")) {
					if (pc.getInventory().checkItem(40637)) {
						htmlid = "marba20";
					} else {
						final L1NpcInstance npc = (L1NpcInstance) obj;
						final L1ItemInstance item = pc.getInventory().storeItem(40637, 1);
						final String npcName = npc.getNpcTemplate().get_name();
						final String itemName = item.getItem().getName();
						pc.sendPackets(new S_ServerMessage(143, npcName, itemName));
						htmlid = "marba6";
					}
				}
			}else if (npcid == 71259) {// アラス
				if (pc.getInventory().checkItem(40665)) {
					htmlid = "aras8";
				} else if (pc.getInventory().checkItem(40637)) {
					htmlid = "aras1";
					if (s.equalsIgnoreCase("A")) {
						if (pc.getInventory().checkItem(40664)) {
							htmlid = "aras6";
							if (pc.getInventory().checkItem(40679)
									|| pc.getInventory().checkItem(40680)
									|| pc.getInventory().checkItem(40681)
									|| pc.getInventory().checkItem(40682)
									|| pc.getInventory().checkItem(40683)
									|| pc.getInventory().checkItem(40684)
									|| pc.getInventory().checkItem(40693)
									|| pc.getInventory().checkItem(40694)
									|| pc.getInventory().checkItem(40695)
									|| pc.getInventory().checkItem(40697)
									|| pc.getInventory().checkItem(40698)
									|| pc.getInventory().checkItem(40699)) {
								htmlid = "aras3";
							} else {
								htmlid = "aras6";
							}
						} else {
							final L1NpcInstance npc = (L1NpcInstance) obj;
							final L1ItemInstance item = pc.getInventory().storeItem(40664,
									1);
							final String npcName = npc.getNpcTemplate().get_name();
							final String itemName = item.getItem().getName();
							pc.sendPackets(new S_ServerMessage(143, npcName,
									itemName));
							htmlid = "aras6";
						}
					} else if (s.equalsIgnoreCase("B")) {
						if (pc.getInventory().checkItem(40664)) {
							pc.getInventory().consumeItem(40664, 1);
							final L1NpcInstance npc = (L1NpcInstance) obj;
							final L1ItemInstance item = pc.getInventory().storeItem(40665,
									1);
							final String npcName = npc.getNpcTemplate().get_name();
							final String itemName = item.getItem().getName();
							pc.sendPackets(new S_ServerMessage(143, npcName,
									itemName));
							htmlid = "aras13";
						} else {
							htmlid = "aras14";
							final L1NpcInstance npc = (L1NpcInstance) obj;
							final L1ItemInstance item = pc.getInventory().storeItem(40665,
									1);
							final String npcName = npc.getNpcTemplate().get_name();
							final String itemName = item.getItem().getName();
							pc.sendPackets(new S_ServerMessage(143, npcName,
									itemName));
						}
					} else {
						if (s.equalsIgnoreCase("7")) {
							if (pc.getInventory().checkItem(40693)
									&& pc.getInventory().checkItem(40694)
									&& pc.getInventory().checkItem(40695)
									&& pc.getInventory().checkItem(40697)
									&& pc.getInventory().checkItem(40698)
									&& pc.getInventory().checkItem(40699)) {
								htmlid = "aras10";
							} else {
								htmlid = "aras9";
							}
						}
					}
				} else {
					htmlid = "aras7";
				}
			}else if (npcid == 80099) {	// 治安団長ラルソン
				if (s.equalsIgnoreCase("A")) {
					if (pc.getInventory().checkItem(40308, 300)) {
						pc.getInventory().consumeItem(40308,300);
						pc.getInventory().storeItem(41315, 1);
						pc.getQuest().set_step(L1Quest
								.QUEST_GENERALHAMELOFRESENTMENT, 1);
						htmlid = "rarson16";
					} else if (!pc.getInventory().checkItem(40308, 300)) {
						htmlid = "rarson7";
					}
				} else if (s.equalsIgnoreCase("B")) {
					if (pc.getQuest().get_step(L1Quest
							.QUEST_GENERALHAMELOFRESENTMENT) ==1
							&& pc.getInventory().checkItem(41325, 1)) {
						pc.getInventory().consumeItem(41325, 1);
						pc.getInventory().storeItem(40308, 2000);
						pc.getInventory().storeItem(41317, 1);
						pc.getQuest().set_step(L1Quest
								.QUEST_GENERALHAMELOFRESENTMENT, 2);
						htmlid = "rarson9";
					} else {
						htmlid = "rarson10";
					}
				} else if (s.equalsIgnoreCase("C")) {
					if (pc.getQuest().get_step(L1Quest
							.QUEST_GENERALHAMELOFRESENTMENT) ==4
							&& pc.getInventory().checkItem(41326, 1)) {
						pc.getInventory().storeItem(40308, 30000);
						pc.getInventory().consumeItem(41326, 1);
						htmlid = "rarson12";
						pc.getQuest().set_step(L1Quest
								.QUEST_GENERALHAMELOFRESENTMENT, 5);
					} else {
						htmlid = "rarson17";
					}
				} else if (s.equalsIgnoreCase("D")) {
					if (pc.getQuest().get_step(L1Quest
							.QUEST_GENERALHAMELOFRESENTMENT) <=1
							|| pc.getQuest().get_step(L1Quest
									.QUEST_GENERALHAMELOFRESENTMENT) ==5) {
						if (pc.getInventory().checkItem(40308, 300)) {
							pc.getInventory().consumeItem(40308,300);
							pc.getInventory().storeItem(41315, 1);
							pc.getQuest().set_step(L1Quest
									.QUEST_GENERALHAMELOFRESENTMENT, 1);
							htmlid = "rarson16";
						} else if (!pc.getInventory().checkItem(40308, 300)) {
							htmlid = "rarson7";
						}
					} else if (pc.getQuest().get_step(L1Quest
							.QUEST_GENERALHAMELOFRESENTMENT) >= 2
							&& pc.getQuest().get_step(L1Quest
									.QUEST_GENERALHAMELOFRESENTMENT) <= 4) {
						if (pc.getInventory().checkItem(40308, 300)) {
							pc.getInventory().consumeItem(40308,300);
							pc.getInventory().storeItem(41315, 1);
							htmlid = "rarson16";
						} else if (!pc.getInventory().checkItem(40308, 300)) {
							htmlid = "rarson7";
						}
					}
				}
			}else if (npcid == 80101) {// クエン
				if (s.equalsIgnoreCase("request letter of kuen")) {
					if (pc.getQuest().get_step(L1Quest
							.QUEST_GENERALHAMELOFRESENTMENT) == 2
							&& pc.getInventory().checkItem(41317, 1)) {
						pc.getInventory().consumeItem(41317, 1);
						pc.getInventory().storeItem(41318, 1);
						pc.getQuest().set_step(L1Quest
								.QUEST_GENERALHAMELOFRESENTMENT, 3);
						htmlid = "";
					} else {
						htmlid = "";
					}
				} else if (s.equalsIgnoreCase("request holy mithril dust")) {
					if (pc.getQuest().get_step(L1Quest
							.QUEST_GENERALHAMELOFRESENTMENT) == 3
							&& pc.getInventory().checkItem(41315, 1)
							&& pc.getInventory().checkItem(40494, 30)
							&& pc.getInventory().checkItem(41318, 1)) {
						pc.getInventory().consumeItem(41315, 1);
						pc.getInventory().consumeItem(41318, 1);
						pc.getInventory().consumeItem(40494, 30);
						pc.getInventory().storeItem(41316, 1);
						pc.getQuest().set_step(L1Quest
								.QUEST_GENERALHAMELOFRESENTMENT, 4);
						htmlid = "";
					} else {
						htmlid = "";
					}
				}
			}else if (npcid == 80136) {// 長老 プロケル
				final int lv15_step = pc.getQuest().get_step(L1Quest.QUEST_LEVEL15);
				final int lv30_step = pc.getQuest().get_step(L1Quest.QUEST_LEVEL30);
				final int lv45_step = pc.getQuest().get_step(L1Quest.QUEST_LEVEL45);
				final int lv50_step = pc.getQuest().get_step(L1Quest.QUEST_LEVEL50);
				if (pc.isDragonKnight()) {
					// 「プロケルの課題を遂行する」
					if (s.equalsIgnoreCase("a") && lv15_step == 0) {
						final L1NpcInstance npc = (L1NpcInstance) obj;
						final L1ItemInstance item = pc.getInventory().storeItem(49210, 1); // プロケルの1番目の指令書
						final String npcName = npc.getNpcTemplate().get_name();
						final String itemName = item.getItem().getName();
						pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
						pc.getQuest().set_step(L1Quest.QUEST_LEVEL15, 1);
						htmlid = "prokel3";
						// 「プロケルの2番目の課題を遂行する」
					} else if (s.equalsIgnoreCase("c") && lv30_step == 0) {
						final int[] item_ids = { 49211, 49215, }; // プロケルの2番目の指令書,プロケルの鉱物の袋
						final int[] item_amounts = { 1, 1,};
						for (int i = 0; i < item_ids.length; i++) {
							final L1ItemInstance item = pc.getInventory().storeItem(
									item_ids[i], item_amounts[i]);
							pc.sendPackets(new S_ServerMessage(143,
									((L1NpcInstance) obj).getNpcTemplate()
									.get_name(), item.getItem().getName()));
						}
						pc.getQuest().set_step(L1Quest.QUEST_LEVEL30, 1);
						htmlid = "prokel9";
						// 「鉱物の袋が必要だ」
					} else if (s.equalsIgnoreCase("e")) {
						if (pc.getInventory().checkItem(49215, 1)) {
							htmlid = "prokel35";
						} else {
							final L1NpcInstance npc = (L1NpcInstance) obj;
							final L1ItemInstance item = pc.getInventory().storeItem(49215, 1); // プロケルの鉱物の袋
							final String npcName = npc.getNpcTemplate().get_name();
							final String itemName = item.getItem().getName();
							pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
							htmlid = "prokel13";
						}
						// 「プロケルの3番目の課題を遂行する」
					} else if (s.equalsIgnoreCase("f") && lv45_step == 0) {
						final int[] item_ids = { 49209, 49212, 49226, }; // プロケルの手紙,プロケルの3番目の指令書,タワー
						// ポータル
						// テレポート
						// スクロール
						final int[] item_amounts = { 1, 1, 1,};
						for (int i = 0; i < item_ids.length; i++) {
							final L1ItemInstance item = pc.getInventory().storeItem(
									item_ids[i], item_amounts[i]);
							pc.sendPackets(new S_ServerMessage(143,
									((L1NpcInstance) obj).getNpcTemplate()
									.get_name(), item.getItem().getName()));
						}
						pc.getQuest().set_step(L1Quest.QUEST_LEVEL45, 1);
						htmlid = "prokel16";
					}
					// 執行普洛凱爾的第四次課題
				} else if (s.equalsIgnoreCase("h") && lv50_step == 0) {
					final int[] item_ids = { 49287, }; // 普洛凱爾的第四次指令書
					final int[] item_amounts = { 1, };
					for (int i = 0; i < item_ids.length; i++) {
						final L1ItemInstance item = pc.getInventory().storeItem(
								item_ids[i], item_amounts[i]);
						pc.sendPackets(new S_ServerMessage(143,
								((L1NpcInstance) obj).getNpcTemplate()
								.get_name(), item.getItem().getName()));
					}
					pc.getQuest().set_step(L1Quest.QUEST_LEVEL50, 1);
					htmlid = "prokel22";
					// 重新接收時空裂痕邪念碎片、普洛凱爾的護身符
				} else if (s.equalsIgnoreCase("k") && lv50_step >= 2) {
					if (pc.getInventory().checkItem(49202, 1)
							|| pc.getInventory().checkItem(49216, 1)) {
						htmlid = "prokel29";
					} else {
						final int[] item_ids = { 49202, 49216, };
						final int[] item_amounts = { 1, 1, };
						for (int i = 0; i < item_ids.length; i++) {
							final L1ItemInstance item = pc.getInventory().storeItem(
									item_ids[i], item_amounts[i]);
							pc.sendPackets(new S_ServerMessage(143,
									((L1NpcInstance) obj).getNpcTemplate()
									.get_name(), item.getItem().getName()));
						}
						htmlid = "prokel28";
					}
				}
			}else if (npcid == 80145) {// 長老 シルレイン
				if (pc.isDragonKnight()) {
					final int lv45_step = pc.getQuest().get_step(L1Quest.QUEST_LEVEL45);
					// 「プロケルの手紙を渡す」
					if (s.equalsIgnoreCase("l") && lv45_step == 1) {
						if (pc.getInventory().checkItem(49209, 1)) { // check
							pc.getInventory().consumeItem(49209, 1); // del
							pc.getQuest().set_step(L1Quest.QUEST_LEVEL45, 2);
							htmlid = "silrein38";
						}
					} else if (s.equalsIgnoreCase("m") && lv45_step == 2) {
						pc.getQuest().set_step(L1Quest.QUEST_LEVEL45, 3);
						htmlid = "silrein39";
					}
				}
			}else if (npcid == 80135) {// エルラス
				if (pc.isDragonKnight()) {
					// 「オーク密使変身スクロールを受け取る」
					if (s.equalsIgnoreCase("a")) {
						if (pc.getInventory().checkItem(49220, 1)) {
							htmlid = "elas5";
						} else {
							final L1NpcInstance npc = (L1NpcInstance) obj;
							final L1ItemInstance item = pc.getInventory().storeItem(49220, 1); // オーク密使変身スクロール
							final String npcName = npc.getNpcTemplate().get_name();
							final String itemName = item.getItem().getName();
							pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
							htmlid = "elas4";
						}
					}
				}
			}else if (npcid == 81245) { // オーク密使(HC3)
				if (pc.isDragonKnight()) {
					if(s.equalsIgnoreCase("request flute of spy")) {
						if (pc.getInventory().checkItem(49223, 1)) { // check
							pc.getInventory().consumeItem(49223, 1); // del
							final L1NpcInstance npc = (L1NpcInstance) obj;
							final L1ItemInstance item = pc.getInventory().storeItem(49222, 1); // オーク密使の笛
							final String npcName = npc.getNpcTemplate().get_name();
							final String itemName = item.getItem().getName();
							pc.sendPackets(new S_ServerMessage(143, npcName, itemName)); // \f1%0が%1をくれました。
							htmlid = "";
						} else {
							htmlid = "";
						}
					}
				}
			}else if (npcid == 81246) { // シャルナ
				if (s.equalsIgnoreCase("0")) {
					materials = new int[] { 40308 };
					counts = new int[] { 2500 };
					if (pc.getLevel() < 30) {
						htmlid = "sharna4";
					} else if (pc.getLevel() >= 30 && pc.getLevel() <= 39) {
						createitem = new int[] { 49149 }; // シャルナの変身スクロール（レベル30）
						createcount = new int[] { 1 };
					} else if (pc.getLevel() >= 40 && pc.getLevel() <= 51) {
						createitem = new int[] { 49150 }; // シャルナの変身スクロール（レベル40）
						createcount = new int[] { 1 };
					} else if (pc.getLevel() >= 52 && pc.getLevel() <= 54) {
						createitem = new int[] { 49151 }; // シャルナの変身スクロール（レベル52）
						createcount = new int[] { 1 };
					} else if (pc.getLevel() >= 55 && pc.getLevel() <= 59) {
						createitem = new int[] { 49152 }; // シャルナの変身スクロール（レベル55）
						createcount = new int[] { 1 };
					} else if (pc.getLevel() >= 60 && pc.getLevel() <= 64) {
						createitem = new int[] { 49153 }; // シャルナの変身スクロール（レベル60）
						createcount = new int[] { 1 };
					} else if (pc.getLevel() >= 65 && pc.getLevel() <= 69) {
						createitem = new int[] { 49154 }; // シャルナの変身スクロール（レベル65）
						createcount = new int[] { 1 };
					} else if (pc.getLevel() >= 70) {
						createitem = new int[] { 49155 }; // シャルナの変身スクロール（レベル70）
						createcount = new int[] { 1 };
					}
					success_htmlid = "sharna3";
					failure_htmlid = "sharna5";
				}
			} else if (npcid == 70035
					|| npcid == 70041
					|| npcid == 70042) { // ギランレース管理人　セシル　ポーリー　パーキン
				if(Config.BugbearRace_Switch == false){
					return;
				}
				if (s.equalsIgnoreCase("status")) {// status
					htmldata = new String[15];
					for (int i = 0; i < 5; i++) {
						htmldata[i * 3] = NpcTable.getInstance().getTemplate(l1j.server.server.model.game.L1BugBearRace.getInstance().getRunner(i).getNpcId()).get_nameid();
						String condition;// 610 普通
						if (l1j.server.server.model.game.L1BugBearRace.getInstance()
								.getCondition(i) == 0) {
							condition = "$610";
						} else {
							if (l1j.server.server.model.game.L1BugBearRace.getInstance()
									.getCondition(i) > 0) {// 368
								// 良い
								condition = "$368";
							} else {// 370 悪い
								condition = "$370";
							}
						}
						htmldata[i * 3 + 1] = condition;
						//htmldata[i * 3 + 2] = String.valueOf(l1j.server.server.model.game.L1BugBearRace.getInstance().getWinningAverage(i));
						htmldata[i * 3 + 2] = String.valueOf(0);
					}
					htmlid = "maeno4";
				}
			}else if (npcid == 710063){//物品合成 opqlo
				new ItemFusion().Action(s, pc);

			}else if (npcid == 81274) {//TODO 新手導師
				//int quest_step = pc.getQuest().get_step(L1Quest.QUEST_TUTOR);//TODO 任務編號階段
				final int level = pc.getLevel();//TODO 角色等級
				final char s1 = s.charAt(0);
				if (level < 13) {
					switch (s1) {
					case 'A': case 'a':// isCrown
						if (level > 1 && level < 5) {// lv2 ~ lv4
							htmlid = "tutorp1";//TODO 指引
						} else if (level > 4 && level < 8) {// lv5 ~ lv7
							htmlid = "tutorp2";//TODO 傳送服務
						} else if (level > 7 && level < 10) {// lv8 ~ lv9
							htmlid = "tutorp3";//TODO 傳送服務
						} else if (level > 9 && level < 12) {// lv10 ~ lv11
							htmlid = "tutorp4";//TODO 傳送服務
						} else if (level > 11 && level < 13) {// lv12
							htmlid = "tutorp5";// 傳送服務
						} else if (level > 12) {//TODO lv13
							htmlid = "tutorp6";//TODO 離開隱藏之谷
						} else {
							htmlid = "tutorend";
						}
						break;
					case 'B': case 'b':// isKnight
						if (level > 1 && level < 5) {// lv2 ~ lv4
							htmlid = "tutork1";//TODO 接受幫助
						} else if (level > 4 && level < 8) {// lv5 ~ lv7
							htmlid = "tutork2";//TODO 傳送服務
						} else if (level > 7 && level < 10) {// lv8 ~ lv9
							htmlid = "tutork3";//TODO 傳送服務
						} else if (level > 9 && level < 13) {// lv10 ~ lv12
							htmlid = "tutork4";//TODO 傳送服務
						} else if (level > 12) {// lv13
							htmlid = "tutork5";//TODO 離開隱藏之谷
						} else {
							htmlid = "tutorend";
						}
						break;
					case 'C': case 'c':// isElf
						if (level > 1 && level < 5) {// lv2 ~ lv4
							htmlid = "tutore1";//TODO 接受幫助
						} else if (level > 4 && level < 8) {// lv5 ~ lv7
							htmlid = "tutore2";//TODO 傳送服務
						} else if (level > 7 && level < 10) {// lv8 ~ lv9
							htmlid = "tutore3";//TODO 傳送服務
						} else if (level > 9 && level < 12) {// lv10 ~ lv11
							htmlid = "tutore4";//TODO 傳送服務
						} else if (level > 11 && level < 13) {// lv12
							htmlid = "tutore5";//TODO 傳送服務
						} else if (level > 12) {// lv13
							htmlid = "tutore6";//TODO 離開隱藏之谷
						} else {
							htmlid = "tutorend";
						}
						break;
					case 'D': case 'd':// isWizard
						if (level > 1 && level < 5) {// lv2 ~ lv4
							htmlid = "tutorm1";//TODO 接受幫助
						} else if (level > 4 && level < 8) {// lv5 ~ lv7
							htmlid = "tutorm2";//TODO 傳送服務
						} else if (level > 7 && level < 10) {// lv8 ~ lv9
							htmlid = "tutorm3";//TODO 傳送服務
						} else if (level > 9 && level < 12) {// lv10 ~ lv11
							htmlid = "tutorm4";//TODO 傳送服務
						} else if (level > 11 && level < 13) {// lv12
							htmlid = "tutorm5";//TODO 傳送服務
						} else if (level > 12) {// lv13
							htmlid = "tutorm6";//TODO 離開隱藏之谷
						} else {
							htmlid = "tutorend";
						}
						break;
					case 'E': case 'e':// isDarkelf
						if (level > 1 && level < 5) {// lv2 ~ lv4
							htmlid = "tutord1";//TODO 接受幫助
						} else if (level > 4 && level < 8) {// lv5 ~ lv7
							htmlid = "tutord2";//TODO 傳送服務
						} else if (level > 7 && level < 10) {// lv8 ~ lv9
							htmlid = "tutord3";//TODO 傳送服務
						} else if (level > 9 && level < 12) {// lv10 ~ lv11
							htmlid = "tutord4";//TODO 傳送服務
						} else if (level > 11 && level < 13) {// lv12
							htmlid = "tutord5";//TODO 傳送服務
						} else if (level > 12) {// lv13
							htmlid = "tutord6";//TODO 離開隱藏之谷
						} else {
							htmlid = "tutorend";
						}
						break;
					case 'F': case 'f':// isDragonKnight
						if (level > 1 && level < 5) {// lv2 ~ lv4
							htmlid = "tutordk1";//TODO 接受幫助
						} else if (level > 4 && level < 8) {// lv5 ~ lv7
							htmlid = "tutordk2";//TODO 傳送服務
						} else if (level > 7 && level < 10) {// lv8 ~ lv9
							htmlid = "tutordk3";//TODO 傳送服務
						} else if (level > 9 && level < 13) {// lv10 ~ lv12
							htmlid = "tutordk4";//TODO 傳送服務
						} else if (level > 12) {// lv13
							htmlid = "tutordk5";//TODO 離開隱藏之谷
						} else {
							htmlid = "tutorend";
						}
						break;
					case 'G': case 'g':// isIllusionist
						if (level > 1 && level < 5) {// lv2 ~ lv4
							htmlid = "tutori1";//TODO 接受幫助
						} else if (level > 4 && level < 8) {// lv5 ~ lv7
							htmlid = "tutori2";//TODO 傳送服務
						} else if (level > 7 && level < 10) {// lv8 ~ lv9
							htmlid = "tutori3";//TODO 傳送服務
						} else if (level > 9 && level < 13) {// lv10 ~ lv12
							htmlid = "tutori4";//TODO 傳送服務
						} else if (level > 12) {// lv13
							htmlid = "tutori5";//TODO 離開隱藏之谷
						} else {
							htmlid = "tutorend";
						}
						break;
					case 'H': case 'h':
						L1Teleport.teleport(pc, 32575, 32945, (short) 0, 5, true); //TODO 說話之島倉庫管理員
						htmlid = "";
						break;
					case 'I': case 'i':
						L1Teleport.teleport(pc, 32579, 32923, (short) 0, 5, true); //TODO 血盟執行人
						htmlid = "";
						break;
					case 'J': case 'j':
						createitem = new int[]
								{ 42099 };
						createcount = new int[]
								{ 1 };
						L1Teleport.teleport(pc, 32676, 32813, (short) 2005, 5, true); // 隱藏之谷地下洞穴
						htmlid = "";
						break;
					case 'K': case 'k':
						L1Teleport.teleport(pc, 32562, 33082, (short) 0, 5, true); //TODO 魔法師吉倫小屋
						htmlid = "";
						break;
					case 'L': case 'l':
						L1Teleport.teleport(pc, 32792, 32820, (short) 75, 5, true); //TODO 象牙塔
						htmlid = "";
						break;
					case 'M': case 'm':
						L1Teleport.teleport(pc, 32877, 32904, (short) 304, 5, true); //TODO 黑暗魔法師賽帝亞
						htmlid = "";
						break;
					case 'N': case 'n':
						L1Teleport.teleport(pc, 32759, 32884, (short) 1000, 5, true); //TODO 幻術士史菲爾
						htmlid = "";
						break;
					case 'O': case 'o':
						L1Teleport.teleport(pc, 32605, 32837, (short) 2005, 5, true); //TODO 村莊西郊
						htmlid = "";
						break;
					case 'P': case 'p':
						L1Teleport.teleport(pc, 32733, 32902, (short) 2005, 5, true); //TODO 村莊東郊
						htmlid = "";
						break;
					case 'Q': case 'q':
						L1Teleport.teleport(pc, 32559, 32843, (short) 2005, 5, true); //TODO 村莊南部狩獵場
						htmlid = "";
						break;
					case 'R': case 'r':
						L1Teleport.teleport(pc, 32677, 32982, (short) 2005, 5, true); //TODO 村莊東南部狩獵場
						htmlid = "";
						break;
					case 'S': case 's':
						L1Teleport.teleport(pc, 32781, 32854, (short) 2005, 5, true); //TODO 村莊東北部狩獵場
						htmlid = "";
						break;
					case 'T': case 't':
						L1Teleport.teleport(pc, 32674, 32739, (short) 2005, 5, true); //TODO 村莊西北部狩獵場
						htmlid = "";
						break;
					case 'U': case 'u':
						L1Teleport.teleport(pc, 32578, 32737, (short) 2005, 5, true); //TODO 村莊西部狩獵場
						htmlid = "";
						break;
					case 'V': case 'v':
						L1Teleport.teleport(pc, 32542, 32996, (short) 2005, 5, true); //TODO 村莊南部狩獵場
						htmlid = "";
						break;
					case 'W': case 'w':
						L1Teleport.teleport(pc, 32794, 32973, (short) 2005, 5, true); //TODO 村莊東部狩獵場
						htmlid = "";
						break;
					case 'X': case 'x':
						L1Teleport.teleport(pc, 32803, 32789, (short) 2005, 5, true); //TODO 村莊北部狩獵場
						htmlid = "";
						break;
					default:
						break;
					}
				}
			}
			// else System.out.println("C_NpcAction: " + s);
			if (htmlid != null && htmlid.equalsIgnoreCase("colos2")) {
				htmldata = this.makeUbInfoStrings(((L1NpcInstance) obj).getNpcTemplate()
						.get_npcId());
			}
			if (createitem != null) { // アイテム精製
				boolean isCreate = true;
				for (int j = 0; j < materials.length; j++) {
					if (!pc.getInventory().checkItemNotEquipped(materials[j],
							counts[j])) {
						final L1Item temp = ItemTable.getInstance().getTemplate(
								materials[j]);
						pc.sendPackets(new S_ServerMessage(337, temp.getName())); // \f1%0が不足しています。
						isCreate = false;
					}
				}

				if (isCreate) {
					// 容量と重量の計算
					int create_count = 0; // アイテムの個数（纏まる物は1個）
					int create_weight = 0;
					for (int k = 0; k < createitem.length; k++) {
						final L1Item temp = ItemTable.getInstance().getTemplate(
								createitem[k]);
						if (temp.isStackable()) {
							if (!pc.getInventory().checkItem(createitem[k])) {
								create_count += 1;
							}
						} else {
							create_count += createcount[k];
						}
						create_weight += temp.getWeight() * createcount[k] / 1000;
					}
					// 容量確認
					if (pc.getInventory().getSize() + create_count > 180) {
						pc.sendPackets(new S_ServerMessage(263)); // \f1一人のキャラクターが持って歩けるアイテムは最大180個までです。
						return;
					}
					// 重量確認
					if (pc.getMaxWeight() < pc.getInventory().getWeight()
							+ create_weight) {
						pc.sendPackets(new S_ServerMessage(82)); // アイテムが重すぎて、これ以上持てません。
						return;
					}

					for (int j = 0; j < materials.length; j++) {
						// 材料消費
						pc.getInventory().consumeItem(materials[j], counts[j]);
					}
					for (int k = 0; k < createitem.length; k++) {
						final L1ItemInstance item = pc.getInventory().storeItem(
								createitem[k], createcount[k]);
						if (item != null) {
							final String itemName = ItemTable.getInstance().getTemplate(
									createitem[k]).getName();
							String createrName = "";
							if (obj instanceof L1NpcInstance) {
								createrName = ((L1NpcInstance) obj)
										.getNpcTemplate().get_name();
							}
							if (createcount[k] > 1) {
								pc.sendPackets(new S_ServerMessage(143,
										createrName, itemName + " ("
												+ createcount[k] + ")")); // \f1%0が%1をくれました。
							} else {
								pc.sendPackets(new S_ServerMessage(143,
										createrName, itemName)); // \f1%0が%1をくれました。
							}
						}
					}
					if (success_htmlid != null) { // html指定がある場合は表示
						pc.sendPackets(new S_NPCTalkReturn(objid, success_htmlid,
								htmldata));
					}
				} else { // 精製失敗
					if (failure_htmlid != null) { // html指定がある場合は表示
						pc.sendPackets(new S_NPCTalkReturn(objid, failure_htmlid,
								htmldata));
					}
				}
			}

			if (htmlid != null) { // html指定がある場合は表示
				pc.sendPackets(new S_NPCTalkReturn(objid, htmlid, htmldata));
			}
		} catch (final Exception e) {
			_log.log(Level.SEVERE, e.getLocalizedMessage(), e);

		} finally {
			this.over();
		}
	}

	//TODO 修改法師召界召換清單和召出怪物by 0968026609
	private void summonMonster(L1PcInstance pc, String s) {
		String[] summonstr_list;
		int[] summonid_list;
		int[] summonlvl_list;
		int[] summoncha_list;
		int summonid = 0;
		int levelrange = 0;
		int summoncost = 0;
		summonstr_list = new String[] { "7", "263", "8", "264", "9", "265",
				"10", "266", "11", "267", "12", "268", "13", "269", "14",
				"270", "526", "15", "271", "527", "17", "18" };
		summonid_list = new int[] { 81083, 81090, 81084, 81091, 81085, 81092,
				81086, 81093, 81087, 81094, 81088, 81095, 81089, 81096, 81097,
				81098, 81099, 81100, 81101, 81102, 81103, 81104 };
		summonlvl_list = new int[] { 28, 28, 32, 32, 36, 36, 40, 40, 44, 44,
				48, 48, 52, 52, 56, 56, 56, 60, 60, 60, 68, 72 };
		//ドッペルゲンガーボス、クーガーにはペットボーナスが付かないので+6しておく
		summoncha_list = new int[] { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8,
				8, 8, 8, 10, 10, 10, 42, 50 };
		//TODO 修改法師召界召換清單和召出怪物by 0968026609

		// サモンの種類、必要Lv、ペットコストを得る
		for (int loop = 0; loop < summonstr_list.length; loop++) {
			if (s.equalsIgnoreCase(summonstr_list[loop])) {
				summonid = summonid_list[loop];
				levelrange = summonlvl_list[loop];
				summoncost = summoncha_list[loop];
				break;
			}
		}
		// Lv不足
		if (pc.getLevel() < levelrange) {
			// レベルが低くて該当のモンスターを召還することができません。
			pc.sendPackets(new S_ServerMessage(743));
			return;
		}
		int petcost = 0;
		final Object[] petlist = pc.getPetList().values().toArray();
		for (final Object pet : petlist) {
			// 現在のペットコスト
			petcost += ((L1NpcInstance) pet).getPetcost();
		}

		/*
		 * // 既にペットがいる場合は、ドッペルゲンガーボス、クーガーは呼び出せない if ((summonid == 81103 || summonid ==
		 * 81104) && petcost != 0) { pc.sendPackets(new S_CloseList(pc.getId()));
		 * return; } int charisma = pc.getCha() + 6 - petcost; int summoncount =
		 * charisma / summoncost;
		 */
		int pcCha = pc.getCha();
		int charisma = 0;
		int summoncount = 0;
		if (levelrange <= 56 // max count = 5
				|| levelrange == 64) { // max count = 2
			if (pcCha > 34) {
				pcCha = 34;
			}
		} else if (levelrange == 60) {
			if (pcCha > 30) { // max count = 3
				pcCha = 30;
			}
		} else if (levelrange > 64) {
			if (pcCha > 44) { // max count = 1
				pcCha = 44;
			}
		}
		charisma = pcCha + 6 - petcost;
		summoncount = charisma / summoncost;

		final L1Npc npcTemp = NpcTable.getInstance().getTemplate(summonid);
		for (int cnt = 0; cnt < summoncount; cnt++) {
			final L1SummonInstance summon = new L1SummonInstance(npcTemp, pc);
			// if (summonid == 81103 || summonid == 81104) {
			// summon.setPetcost(pc.getCha() + 7);
			// } else {
			summon.setPetcost(summoncost);
			// }
		}
		pc.sendPackets(new S_CloseList(pc.getId()));
	}

	private String talkToDimensionDoor(L1PcInstance pc, L1NpcInstance npc,String s) {
		String htmlid = "";
		int protectionId = 0;
		int sealId = 0;
		int locX = 0;
		int locY = 0;
		short mapId = 0;
		if (npc.getNpcTemplate().get_npcId() == 80059) { // 次元の扉(土)
			protectionId = 40909;
			sealId = 40913;
			locX = 32773;
			locY = 32835;
			mapId = 607;
		} else if (npc.getNpcTemplate().get_npcId() == 80060) { // 次元の扉(風)
			protectionId = 40912;
			sealId = 40916;
			locX = 32757;
			locY = 32842;
			mapId = 606;
		} else if (npc.getNpcTemplate().get_npcId() == 80061) { // 次元の扉(水)
			protectionId = 40910;
			sealId = 40914;
			locX = 32830;
			locY = 32822;
			mapId = 604;
		} else if (npc.getNpcTemplate().get_npcId() == 80062) { // 次元の扉(火)
			protectionId = 40911;
			sealId = 40915;
			locX = 32835;
			locY = 32822;
			mapId = 605;
		}

		// 「中に入ってみる」「元素の支配者を近づけてみる」「通行証を使う」「通過する」
		if (s.equalsIgnoreCase("a")) {
			L1Teleport.teleport(pc, locX, locY, mapId, 5, true);
			htmlid = "";
		}
		// 「絵から突出部分を取り除く」
		else if (s.equalsIgnoreCase("b")) {
			final L1ItemInstance item = pc.getInventory().storeItem(protectionId, 1);
			if (item != null) {
				pc.sendPackets(new S_ServerMessage(143, npc.getNpcTemplate()
						.get_name(), item.getLogName())); // \f1%0が%1をくれました。
			}
			htmlid = "";
		}
		// 「通行証を捨てて、この地をあきらめる」
		else if (s.equalsIgnoreCase("c")) {
			htmlid = "wpass07";
		}
		// 「続ける」
		else if (s.equalsIgnoreCase("d")) {
			if (pc.getInventory().checkItem(sealId)) { // 地の印章
				final L1ItemInstance item = pc.getInventory().findItemId(sealId);
				pc.getInventory().consumeItem(sealId, item.getCount());
			}
		}
		// 「そのままにする」「慌てて拾う」
		else if (s.equalsIgnoreCase("e")) {
			htmlid = "";
		}
		// 「消えるようにする」
		else if (s.equalsIgnoreCase("f")) {
			if (pc.getInventory().checkItem(protectionId)) { // 地の通行証
				pc.getInventory().consumeItem(protectionId, 1);
			}
			if (pc.getInventory().checkItem(sealId)) { // 地の印章
				final L1ItemInstance item = pc.getInventory().findItemId(sealId);
				pc.getInventory().consumeItem(sealId, item.getCount());
			}
			htmlid = "";
		}
		return htmlid;
	}

	private boolean usePolyScroll(L1PcInstance pc, int itemId, String s) {
		int time = 0;
		if (itemId == 40088 || itemId == 40096) { // 変身スクロール、象牙の塔の変身スクロール
			time = 1800;
		} else if (itemId == 140088) { // 祝福された変身スクロール
			time = 2100;
		}

		final L1PolyMorph poly = PolyTable.getInstance().getTemplate(s);
		final L1ItemInstance item = pc.getInventory().findItemId(itemId);
		boolean isUseItem = false;
		if (poly != null || s.equals("none")) {
			if (s.equals("none")) {
				if (pc.getTempCharGfx() == 6034
						|| pc.getTempCharGfx() == 6035) {
					isUseItem = true;
				} else {
					pc.removeSkillEffect(SHAPE_CHANGE);
					isUseItem = true;
				}
			} else if (poly.getMinLevel() <= pc.getLevel() || pc.isGm()) {
				L1PolyMorph.doPoly(pc, poly.getPolyId(), time,L1PolyMorph.MORPH_BY_ITEMMAGIC);
				isUseItem = true;
			}
		}
		if (isUseItem) {
			pc.getInventory().removeItem(item, 1);
		} else {
			pc.sendPackets(new S_ServerMessage(181)); // \f1そのようなモンスターには変身できません。
		}
		return isUseItem;
	}

	private String watchUb(L1PcInstance pc, int npcId) {
		final L1UltimateBattle ub = UBTable.getInstance().getUbForNpcId(npcId);
		final L1Location loc = ub.getLocation();
		if (pc.getInventory().consumeItem(L1ItemId.ADENA, 100)) {
			try {
				pc.save();
				pc.beginGhost(loc.getX(), loc.getY(), (short) loc.getMapId(),true);
			} catch (final Exception e) {
				_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
			}
		} else {
			pc.sendPackets(new S_ServerMessage(189)); // \f1アデナが不足しています。
		}
		return "";
	}

	/**離線原諒或不原諒***/
	private static void loadPkCount(final int objid , final boolean forget){
		if(objid <=0){
			return;
		}
		Connection con = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		try {
			con = DatabaseFactory.get().getConnection();
			pstm = con.prepareStatement("SELECT * FROM characters WHERE objid=?");
			pstm.setInt(1, objid);

			rs = pstm.executeQuery();
			if (!rs.next()) {
				/*
				 * SELECTが結果を返さなかった。
				 */
				return;
			}
			final int pkcount =	rs.getInt("PKcount");
			if(pkcount <=0){
				return;
			}
			writePkCount(objid , pkcount , rs.getTimestamp("LastPk") , forget);
		} catch (SQLException e) {
			_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
		} finally {
			SQLUtil.close(rs, pstm, con);
		}
	}

	private static void writePkCount(final int objid , int pkcount , final Timestamp time , final boolean forget){
		Connection con = null;
		PreparedStatement pstm = null;
		try {
			con = DatabaseFactory.get().getConnection();
			pstm = con.prepareStatement("UPDATE characters SET PKcount=?,LastPk=? WHERE objid="+objid);
			if(forget){
				pkcount -=1;
			}else{
				pkcount +=1;
			}
			pstm.setInt(1, pkcount);
			if(pkcount <=0){
				pstm.setTimestamp(2, null);
			}else{
				pstm.setTimestamp(2, time);
			}
			pstm.execute();
		} catch (SQLException e) {
			_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
		} finally {
			SQLUtil.close(null, pstm, con);
		}
	}
	private boolean createNewItem(L1PcInstance pc,final int item_id,final int count) {
		L1ItemInstance item = ItemTable.getInstance().createItem(item_id);
		if (item != null) {
			item.setCount(count);
			//			if (pc.getInventory().checkAddItem(item, count) == L1Inventory.OK) {
			pc.getInventory().storeItem(item);
			pc.sendPackets(new S_ServerMessage(403, item.getLogName())); // %0を手に入れました。
			return true;
			//			} else { // 持てない場合は地面に落とす 處理のキャンセルはしない（不正防止）
			//				//L1World.getInstance().getInventory(pc.getX(), pc.getY(), pc.getMapId()).storeItem(item);
			//				return false;
			//			}
		} else {
			return false;
		}
	}
}
